首先,实现一个最简单的网络聊天室,必备两个设备——服务器和多个客户端。服务器可以是我们自己的电脑, 而客户端我们可以用cmd来模拟。
于是我们分四步来实现:
一: 创建服务器
java.net.ServerSocket server = new java.net.ServerSocket(10101);//10101未连接端口号
(参考类的介绍————)
二:接收连接到了服务器的客户端
Socket socket = server.accept();//发现一个客户端
三: 接下来的操作就是对输出和输入流的操作了————因为一个客户端就可以看做是一个流的对象,我们可以接收客户端里的输入,也可以从服务器想客户端输出消息。
详细内容见代码:——
package 聊天室01; import java.net.Socket; import java.util.Map; public class Severs { //使用一个静态的map来保存客户端号和客户端 public static Map<Integer, Socket> map = new java.util.HashMap<Integer, Socket>(); public static void main(String[] args) { try { //创建服务器对象 java.net.ServerSocket server = new java.net.ServerSocket(10101); System.out.println("服务器已开启"); int num = 1;//定义变量来记录客户端的个数 while(true){//死循环的接受客户端连接 Socket socket = server.accept();//发现一个客户端 map.put(num, socket);//保存 Client_thread client = new Client_thread(socket , num);//立即开一个线程来处理 client.start();//开始线程 num++;//下一个客户端的编号加一 } }catch(Exception ex){ ex.printStackTrace(); } } }
为了接收多个客户端同时,我果断开启了多线程来实现客户端的
package 聊天室01; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class Client_thread extends Thread{ private Socket socket;//一个客户端 private int num;//记录当前的客户端编号 Client_thread(Socket socket , int num){ this.socket = socket; this.num = num; } public void run() { try {//向服务器直接输出消息 System.out.println("客戶端 "+num+" : "+socket.getLocalSocketAddress().toString()+"已连接"); OutputStream output = socket.getOutputStream();//获得向当前客户端输出的流 output.write(("欢迎 欢迎 \r\n").getBytes());//先把字符串转换为字符数组 然后以字节流输出到客户端 output.flush();//强制输出结束 // output.close(); //获得当前客户端的输入流 InputStream input = socket.getInputStream(); while(true){//不断地接收客户端的输入 char ch = (char)input.read();//按字节接受输入 String str = "" + ch; while(ch!='\n'){ ch = (char)input.read(); str+=ch; } System.out.print("客户端 "+num+" 说: "+str);//输入到服务器 for(int i=0 ; i<Severs.map.size() ; i++){//想其他的在线服务器发送消息 if(num != (i+1)){//除了自己 OutputStream output_temp = Severs.map.get(i+1).getOutputStream();//获得客户端输出的流 output_temp.write(str.getBytes());//先把字符串转换为字符数组 然后以字节流输出到客户端 output_temp.flush(); } } } }catch(Exception ex){ ex.printStackTrace(); } } }
四:运行代码 ,开启服务器。
打开cmd ,连接服务器 telnet 127.0.0.1 10101 中间的是本机IP 最后一个是我们本机服务器的端口
(注意:需要先打开telnet系统服务,默认是不打开的(控制面板—程序与功能—打开或关闭windows
功能然后选中telnet客户端))
相关推荐
《VC++网络编程聊天室程序源代码解析》 在计算机科学领域,网络编程是一项至关重要的技术,它使得不同计算机间的通信成为可能。本文将详细解析一个基于VC++的网络编程聊天室程序,该程序实现了多点聊天功能,是学习...
【网络聊天室论文】主要探讨了基于JSP技术构建网络聊天室的设计与实现,这是一个针对本科毕业设计的项目,旨在让学生熟悉网站建设和相关技术。网络聊天室作为一种信息交流平台,随着互联网的发展,已经成为各网站的...
《易语言网络聊天室工具详解》 易语言网络聊天室工具,又称“小刀”,是一款专为局域网用户设计的即时通讯软件。它利用易语言编程环境开发,旨在提供简单、高效的通信方式,使在同一局域网内的用户能够轻松实现即时...
总的来说,这个【网络聊天室代码】是一个简单的网络通信示例,展示了如何利用TCP协议构建一个基本的多用户聊天环境。它可以帮助学习者理解网络编程的基本原理,如socket通信、数据包的发送和接收,以及如何设计和...
在IT行业中,构建一个聊天室是一项基础且重要的任务,它涉及到网络编程、多线程以及数据传输等核心技术。本项目“聊天室2”是用Java语言编写的,它包括了客户端和服务器端的完整实现,这为我们提供了学习和理解网络...
【Qt网络聊天室自我精编】是一个基于C++编程语言,并使用Qt库开发的网络聊天应用。Qt是一个功能强大的跨平台应用程序开发框架,支持Windows、Linux、macOS等多种操作系统,因此这个聊天室程序具备良好的跨平台性。它...
总结起来,"基于MFC的简单网络聊天室"是一个很好的实践项目,它涵盖了MFC的基础知识、网络编程的基本概念以及面向对象编程的实践。对于想要学习MFC和网络编程的初学者,这是一个很好的起点,通过分析和运行这个项目...
【基于Linux网络聊天室】是一个实现在线交流的平台,它具备了多种功能,旨在提供一个高效、便捷的沟通环境。这个聊天室系统充分利用了Linux操作系统的优势,为用户提供了一个安全、稳定的基础架构。以下是对该系统...
这个聊天室程序实现了基本的在线交流功能,包括私聊、群聊、文件传输以及语音聊天,为用户提供了一种实时互动的平台。 在C++编程中,MFC是一个重要的工具集,它是Microsoft为Windows应用程序设计的一套类库,简化了...
根据给定文件的信息,我们可以详细地探讨一下C++网络聊天室设计报告和源程序的关键知识点。 ### 一、需求分析 随着互联网技术的发展,网络聊天室作为一种即时通信工具,为用户提供了一个实时交流的平台。本项目的...
《使用易语言实现Winsock网络聊天室》 网络聊天室是一种常见的实时通信工具,通过它,用户可以实现实时的文字、语音甚至视频交流。在本文中,我们将深入探讨如何使用易语言来实现一个基于Winsock的网络聊天室。...
【VC简单聊天室软件(源码)】是一个基于Visual C++开发的基本网络聊天室应用程序,旨在为初学者提供一个学习网络编程的实例。这个项目涵盖了网络通信的基础知识,特别是TCP/IP协议的应用,以及多线程编程技术。让我们...
【在线聊天室与Visual Studio开发】 在信息技术领域,开发在线聊天室是一项常见的任务,它涉及到实时通信、用户交互和数据库管理等多个技术层面。在这个项目中,我们利用Microsoft的Visual Studio作为集成开发环境...
5. **安全性**:尽管TCP/IP提供了基本的连接可靠性,但聊天室可能还需要考虑用户身份验证、加密通信(如SSL/TLS)以及防止恶意行为的安全措施。 6. **多线程**:为了确保用户界面的响应性,需要在后台处理网络通信...
总的来说,QT5实现网络聊天室设计涵盖了网络通信的基本原理,包括TCP/IP协议、套接字编程、HTTP请求以及QT特有的信号和槽机制。理解并掌握这些知识点,对于构建高效、可靠的网络应用至关重要。在实际项目中,还需要...
本项目是一个基于ASP.NET实现的简易网络聊天室,它虽简单,但对于理解和学习聊天室的基本工作原理非常有帮助。 首先,ASP.NET网络聊天室的核心在于实时通信。在传统的HTTP协议下,网页是静态的,每次用户交互都需要...
本文将深入探讨如何基于C语言构建一个简易聊天室,这是一个非常实用的基础项目,可以帮助初学者更好地理解和掌握网络编程的基本概念。 首先,我们要了解的是TCP/IP协议族,它是互联网通信的基础。在C语言中,我们...
这个聊天室示例不仅能够加深对网络编程的理解,还能展示多线程、套接字编程以及并发处理等关键概念。 首先,我们需要理解聊天室的核心技术:网络编程。在Java中,我们通常使用Socket API进行网络通信。Socket是网络...
当我们谈论“Linux下的Shell socket实现聊天室”时,我们实际上是在讨论如何利用Shell脚本结合socket编程来创建一个基本的网络通信环境,使得多用户可以通过网络进行实时的文本交流。这个聊天室应用通常包括两个主要...