📄 serverthread.java
字号:
package chat;import java.net.*;import java.io.*;import java.lang.*;/** * 类名:serverThread * 描述:整个服务器端的服务线程,接收客户端请求并且启动相应进程进行处理 */public class serverThread extends Thread { //声明发送和接收数据包 DatagramPacket sendpacket,receivepacket; //声明发送和接收DatagramSocket DatagramSocket sendsocket,receivesocket; //构造函数 public serverThread() { try { //初始化所有聊天室房间信息 WholeChatRoomInfo wholeInfo=new WholeChatRoomInfo(); wholeInfo.InitialRoom(); //初始化接收和发送数据报socket sendsocket=new DatagramSocket(); receivesocket=new DatagramSocket(WholeChatRoomInfo.serverport); } catch(SocketException se) { //异常的报错机制 se.printStackTrace() ; System.exit(0); } } //线程执行体 public void run() { //由于用户信息需要随时更新,这里创建一个线程负责整个用户信息在客户端显示更新 PatchUserInfoThread patchuserInfo=new PatchUserInfoThread(); //启动用户信息更新线程 patchuserInfo.start(); //对被踢成员的时间限制的刷新 TicktimeRefresh ticktimeThread = new TicktimeRefresh(); //启动该线程 ticktimeThread.start(); //死循环 while(true){ try{ //缓冲区 byte[]array=new byte[100]; receivepacket=new DatagramPacket(array,array.length ); receivesocket.receive(receivepacket);//接收 ChatFrame.textArea1.append("\nfrom "+receivepacket.getAddress() +" : "); //byte data[]=receivepacket.getData() ; String received=new String(receivepacket.getData()); ChatFrame.textArea1.append(received); //处理整个接收消息的过程 char mark='@'; int type=0; int index=received.indexOf(mark); type=Integer.parseInt(received.substring(0,index)); received=received.substring(index+1); switch(type) { case 1: //登陆请求 CusLoginThread loginthread=new CusLoginThread(receivepacket); loginthread.start(); //ChatFrame.textArea1.append(Integer.toString(type)); break; case 2: //注册信息 RegisterThread register=new RegisterThread(received,receivepacket); register.start(); break; case 3: //获取房间信息 case 4: //进入房间 case 5: //发送消息 case 6: //刷新包 case 7: //退出房间 case 8: //查询用户信息 case 9: //踢人包 case 11: //整个退出 RoomAdmThread admthread=new RoomAdmThread(receivepacket,type); admthread.start(); break; case 10: //留言 break; } } catch (IOException se){ ChatFrame.textArea1.append(se.toString() +"\n"); se.printStackTrace() ; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -