`

通信基础篇小项目-----多人聊天窗口的实现

    博客分类:
  • java
 
阅读更多


        自然界的通信种类是多种多样的,我们在每一天都会遇到各种各样的通信问题。然而通信的实质是什么,其实就是一种协议而已,仅此。就拿语言文字来说吧,每个国家制定不同的语言用来实现交流,这就是一种最基础的通信,每个文字代表的是一种不同的内容,这是人和人之间事先定好的协议,所以说,只要协议一旦确定,通信就不是什么大问题了。

       学习java通信的核心是创建服务器,客户端连接服务器,客户端与服务器的信息交换。创建服务器只需要一行代码就足够了Socketserver server=new Socket(port)(其中port为服务器得端口号),创建服务器后,服务器需要进入等待状态,一旦有客户端连接上来就会主动把端口给予客户端,客户端与服务器可以是就连接在一起。就可以等待消息的发送了。当然这个过程也只需要一行代码,Socket  client=server.accept();. 最后就是客户机连接服务器了,连接服务器也只需要一行代码Socket client=new Socket("ip"  , port)(就是需要获得服务器的ip地址和端口号)。这样一个简单的服务器和端口就连接好了。

       下面是根据这个原理写的一个简单多人聊天室。

        首先是UML图:首先我们得定义六个类,

                           

        


 

 

 

 

 

  这样,一个简单的多人聊天室就构架好了,下面是实现的过程,首先是启动界面类,客户端的界面类会弹出如下窗口。

 输入端口号就可以创建服务器,一个简单的服务器就这样创建了,当然,由于客户端的代码在设置的时候没有设置传IP地址,所以这里默认的端口只能是6666.这会在以后得以解决。

    启动客户端界面如下



 点击连接服务器后就可以连接到服务器中。对话开始。当然这里我们多创建几个客户端开始聊天。




 

 
 
开始聊天、

 

 这样一个简单的聊天是就实现了。再来温习一下:

首先是是服务器创建,并且让服务器处于等待状态

	public void setupServer(){										try{
					
	ServerSocket so=new ServerSocket(port);
      System.out.println("创建服务器成功了,port: "+port);
	while(true){
	 client =so.accept();
 System.out.println("有人来连结了"+client.getRemoteSocketAddress().toString());
	//启动一个服务器的线程去处理这个连上来的客户端
	ServerThread st=new ServerThread(client,jtereceive);
		st.start();
	   ChatList. ThreadAdd(st); }
	}catch(Exception e){
	e.printStackTrace();
	}
}

 客户端来连接服务器

Socket socket=new Socket(this.IP,this.port);

 读取消息的时候为了不阻塞其他线程的进行,所以读取线程的方法要单独的在一个线程。
 


 

  • 大小: 6.2 KB
  • 大小: 3.3 KB
  • 大小: 3 KB
  • 大小: 1.7 KB
  • 大小: 4.2 KB
  • 大小: 5.5 KB
  • 大小: 9.8 KB
  • 大小: 10.2 KB
  • 大小: 35 KB
  • 大小: 35 KB
  • 大小: 29.7 KB
分享到:
评论
1 楼 QuarterLifeForJava 2013-08-01  
谢谢,学习了

相关推荐

    MFC 多人聊天程序

    本篇文章将深入探讨如何使用MFC,结合VS2008和socket技术,实现一个多人聊天程序。 首先,我们来理解MFC的基本概念。MFC是一组面向对象的类库,它封装了Windows API,提供了更高级别的接口,如窗口、菜单、对话框等...

    C#多人聊天程序

    在信息技术领域,开发一款多人聊天程序是常见的实践项目,它可以提升开发者在网络通信和并发处理方面的技能。本篇文章将以"C#多人聊天程序"为主题,深入探讨其核心技术和实现原理。 一、C#语言基础 C#是一种面向...

    VB网络多人聊天系统的设计与实现(论文+源代码)【VB】.zip

    2. **网络通信基础**:网络多人聊天系统的核心在于网络通信。VB提供了MSComm控件,用于串行通信和简单的网络通信。此外,还可以利用Winsock控件来处理TCP/IP协议,实现客户端与服务器之间的数据传输。 3. **系统...

    VB网络多人聊天系统的设计与实现(论文+源代码).zip

    《VB网络多人聊天系统的设计与实现》是一篇深入探讨如何使用Visual Basic (VB) 开发网络聊天系统的学术论文,同时附带源代码供学习者参考。这篇论文详细阐述了从需求分析、系统设计到实现过程的各个环节,为读者提供...

    Third-party-chat-room-procedures.rar_VC mfc 聊天室_VC++ socket mfc

    本篇将深入探讨“Third-party-chat-room-procedures.rar”这个压缩包文件中涉及到的知识点,主要涵盖VC++、MFC以及Socket编程,特别关注如何使用这些技术来实现一个第三方聊天室程序。 首先,我们来看VC++。VC++是...

    基于python的GUI聊天室设计.pdf

    总的来说,这个基于Python的GUI聊天室设计涵盖了网络通信基础、多线程技术、异常处理以及GUI编程。通过这种方式,用户可以在本地或网络上与其他用户进行实时交流,实现了基本的社交功能。这种设计对于理解网络编程和...

    毕业论文设计-IT计算机-JAVA基于局域网的聊天室系统(源代码+论文).zip

    这篇毕业论文设计主要聚焦于构建一个基于Java的局域网聊天室系统,涵盖了软件开发的多个关键环节,包括需求分析、系统设计、编程实现、测试与优化,以及论文撰写。以下将详细介绍其中涉及的主要知识点: 1. **Java...

    ChatClient.rar

    本篇文章将深入探讨一个使用C++在Linux环境下实现的基于select机制的多人网络聊天室。这个项目包含了服务器端和客户端的源代码,旨在帮助开发者理解网络编程中的多路复用技术以及如何实现实时的多人交流。 1. **...

    带有ASP.NET WebForm和BootStrap的SignalR聊天应用程序-第三部分

    在这个聊天应用中,WebForms将作为用户界面的基础,承载聊天窗口、输入框、发送按钮等元素。 **Bootstrap** Bootstrap是流行的前端开发框架,用于快速构建响应式和移动优先的网站。在这里,Bootstrap将用于设计聊天...

    virtual C++ 聊天系统

    本篇文章将深入探讨如何利用C++编程语言,构建一个类似QQ的虚拟聊天系统,带您领略C++在实现复杂网络通信应用中的强大能力。 首先,C++作为一款静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化编程,...

    C++教程网视频:linux网络编程

    #### Linux网络编程之TCP/IP基础篇 ##### TCPIP基础(一) - **ISO/OSI参考模型**:ISO/OSI模型分为七层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 - **TCP/IP四层模型**:TCP/IP模型...

    vue+socket.io+express+mongodb 实现简易多房间在线群聊示例

    该项目主要是通过做一个多人在线多房间群聊的小项目,来练手全栈技术的结合运用。项目主要包括客户端和服务端两个部分。客户端使用 Vue 实现了聊天页面,服务端使用 Express 实现了 API 接口和数据库操作。 主要...

    网络即时通信工具的综合比较分析.pdf

    本篇文章将深入分析并比较两种常见的网络即时通信工具——QQ和Microsoft的NetMeeting。 QQ作为一款广受欢迎的即时通信软件,其特点是界面美观、操作简便。在文字聊天方面,用户可以通过右键点击好友头像或直接双击...

    vb游戏编写

    - **多人游戏**: 学习如何在网络环境中实现多人在线游戏。 - **服务器端与客户端通信**: 掌握基本的TCP/IP协议,实现客户端与服务器之间的数据传输。 - **同步技术**: 解决玩家动作的实时同步问题,保证游戏的公平性...

    iOS游戏应用源代码——boydlee-Airmail-917396c.zip

    5. **网络通信**:如果游戏支持在线多人模式,那么网络通信代码将是不可或缺的部分,可能使用URLSession或者第三方库如Alamofire进行实现。 6. **数据持久化**:为了保存游戏进度或用户信息,开发者通常会用到Core ...

    Unity仿英雄联盟源码-(含客户端、服务端、详细代码讲解文档)

    Unity的UI系统允许开发者创建丰富的界面,包括商店、计分板、聊天窗口等。 "myLOL文档讲解"文件可能详细阐述了项目的架构设计、技术选型和实现细节,对于开发者来说是一份宝贵的参考资料。通过阅读这份文档,我们...

    DirectX中文手册

    - **DirectPlay**: 支持网络通信和多人游戏。 - **DirectShow**: 用于视频和音频流媒体处理。 #### 二、DirectDraw详解 **2.1 什么是DirectDraw?** DirectDraw是DirectX中最基础的2D图形渲染组件之一,主要用于...

    网络游戏-基于IP网络的传真实现同步切换的方法.zip

    《网络游戏-基于IP网络的传真实现同步切换的方法》这篇资料深入探讨了网络游戏中的一个重要技术领域:基于IP网络的实时传输与同步切换。在网络游戏尤其是多人在线游戏中,玩家的动作、位置变化以及其他游戏状态需要...

    js实现微信聊天效果

    总之,通过JavaScript实现微信聊天效果是一个综合性的项目,涉及到前端UI设计、事件处理、DOM操作以及可能的网络通信。通过这个案例,开发者可以深入理解JavaScript在网页交互中的作用,并为进一步学习更复杂的Web...

Global site tag (gtag.js) - Google Analytics