Java综合应用实验-多人聊天室(多线程实现)

Java综合应用实验-多人聊天室(多线程实现)

1.实验目的:
编写一个 Java 应用程序,实现图形界面多人聊天室(多线程实现),要求聊天室窗口标题是 “欢迎使用 XXX 聊天室应用”,其中 XXX 是自己的班级姓名学号,如“软件 171 张三 1234”。
2.实验代码:
服务端程序代码:
ServerChat.java

package works;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class ServerChat {
   

	//定义Map集合用于存储用户的Socket以及用户的名字   key:Socket    Value:用户名
	public final static Map<Socket,String> socketsMaps = Collections.synchronizedMap(new HashMap<Socket,String>());
	public static void main(String[] args) {
   
		// TODO Auto-generated method stub
		try {
   
			// 创建服务端套接字
			ServerSocket serverSocket = new ServerSocket(9999); 
System.out.println("------服务端暴露-------");
			while (true) {
   
				// 监听客户端套接字,若有客户端连接,则代码不会往下执行,否则会堵塞在此处。
				Socket socket = serverSocket.accept();

				// 开启线程,用于读取客户端发送的信息,并转发给每一个客户端
				new ThreadServer(socket).start();
			}
		} catch (Exception e) {
   
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}

class ThreadServer extends Thread {
   
	private Socket socket;
	ThreadServer(){
   };
	ThreadServer(Socket socket)
	{
   
		this.socket = socket;
	}
	@Override
	public void run() {
   
		try {
   
			while(true)
			{
   
				DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
				String data = dataInputStream.readUTF();
				
				if(data.startsWith("①②③④")&&data.endsWith("①②③④"))
				{
   
					//发送过来的是用户名<
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值