`
java--hhf
  • 浏览: 305810 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论
阅读更多

     首先,实现一个最简单的网络聊天室,必备两个设备——服务器和多个客户端。服务器可以是我们自己的电脑, 而客户端我们可以用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客户端))

  • 大小: 148.3 KB
  • 大小: 76.4 KB
  • 大小: 89.5 KB
分享到:
评论

相关推荐

    Delphi实现网络聊天室基本功能源码

    利用delphi7下indy9的两个控件:TidTcpClient和TidTcpServer写的网络聊天室工具。需要将服务器端布置在公网上。也可以使用两个路由器,连接其中一个路由器的电脑可以当作服务器,在上面布置服务器端程序。客户端用...

    基于 visual studio开发的在线聊天室

    这是一个基于 visual studio开发的在线聊天室,通过登录进入聊天室,可显示当前在线人数,发言人的姓名及内容

    基于MFC的UDP简易聊天室

    课程设计——简易网络聊天室。 C++基于MFC开发的UDP网络聊天室。

    基于MFC基本对话框的CSocket局域网通信网络聊天室源码

    是基于MFC的网络聊天室,用CSocket类实现; 源码,希望对大家有用。

    VC简单聊天室软件(源码)

    本程序主要实现基本网络聊天室,希望能给网络初学者一些帮助!

    java聊天室论文

    基于Java的聊天室是利用Eclipse开发包工具进行开发出的一款网络聊天室。这款聊天室是套接字通信开发采用c/s模式的聊天室程序。聊天室共分为服务器端和客户端两个部分,服务器端程序主要负责侦听客户端发来的消息,...

    网络聊天室 MFC

    网络聊天室 MFC VC Socket编程 基于MFC异步套接字编程 调试通过 基本实现

    Java聊天室程序源码(毕业设计)

    系统具有目前聊天室的基本功能:包括支持多种头像,字色,语气选择,支持emote,支持私聊,支持在线聊友查找,支持分屏显示,支持用户定制自己的私人头像,支持脏话过滤,支持嘉宾聊天。屏蔽掉自己讨厌的人物,可以给...

    C语言构建网络聊天室

    C语言构建网络聊天室 利用C语言编写Windows应用程序有两种方式:一种是Windows C编程方式,另一种是Visual C++编程方式。...用Winsock构建一个网络聊天室,有两种基本的方式:数据报方式和流方式。

    Java聊天室的设计与实现socket 设计软件源码+WORD毕业论文文档.zip

    本软件是采用sun公司开发提供的java语言制作的,是基于C/S模型的网上聊天室。这个系统分为两个部分,服务端和客户端。服务端的工作主要是来监听和接收来自客户端的请求,然后处理客户端发来的消息,并通知客户端。...

    《Java程序设计实训》报告 多人聊天室

    一.实训目的 1、使用Java技术完成聊天室系统,深入学习使用Java...程序实现了聊天室的基本功能,其中有: 1.启动服务器。  2.启动登陆界面。  3.进入客户端界面。 4.发送信息。  5.离开客户端界面。  6.关闭服务器

    基于TCP的网络聊天室

    2.利用VC++6进行较复杂的网络编程,完成网络聊天室的设计及编写; 三、实验(设计)仪器设备和材料 1.计算机及操作系统:PC机,Windows; 2.网络环境:可以访问互联网; 四、 TCP/IP程序设计基础 基于...

    基于C/S结构的网络聊天室设计论文

    现在随着网络聊天室的发展,其功能已经超越了普通的聊天活动,如新浪聊天室定期邀请当今社会知名人士、专家、业界领袖、优秀人物、政府部门领导等开展一些社会活动、宣传和讨论等多种形式的活动。网络聊天室也是网络...

    JavaGUI聊天室.zip

    刚接触Java中的GUI编程和网络编程时觉得很有意思,所以就结合了这两个方面并结合IO、多线程的知识,做了一个GUI版的聊天室。 这个聊天室是两端开发,服务器端和客户端 **服务器端功能:** 1. 开启和关闭服务器 2. 总...

    JSP课程设计-聊天室

    (1)网上聊天使人们之间的通信变得越来越方便,快捷,准确,及时。 (2)还可以在网上认识新的朋友,交流自己的一些想法。 三 系统的总体分析与设计 分析该聊天室系统,制订整个系统框架,主要要求及特点如下: 1....

    网络聊天室 (源码+可执行程序).zip

    使用Qt实现的网络聊天室,此网络聊天室的基本功能包括TCP并发服务器、登录界面、聊天室的基本功能

    基于Qt的网络聊天室

    基于Qt的网络聊天室 易于理解和实现 C++的基本语法和网络套接字

    网络聊天室小程序 聊天室

    网络聊天室小程序,网络聊天室初步建立。基本原程序,利用winsock控件实现。

    socket网络聊天室

    基于Linux socket函数及系统函数编写的小型网络聊天室,实现了单聊,多聊,群聊的基本功能,及显示在线人数,代码本人写的,可直接运行,是学习网络编程和系统编程的好的代码。

Global site tag (gtag.js) - Google Analytics