📄 serverthread.java
字号:
package serverframe;import java.io.*;import java.awt.*;import java.net.*;import java.util.*;import java.awt.event.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2006</p> * <p>Company: </p> * @author not attributable * @version 1.0 */import javax.swing.*;class ServerThread extends Thread{ int sPort; ServerSocket sSocket; ServerFrame frame; JTextArea sStatus; Vector Clients;//一可变动数组用来存储客户端线程 Vector messages;//存储客户端消息 Vector system; BroadCast BroadCastWriter;//广播线程 CleanDeadConnect Cleaner;//清除不可用的线程 public ServerThread(ServerFrame f) { Clients = new Vector();//实例化Vctor messages = new Vector(); system=new Vector(); try { sPort = 7000; sSocket = new ServerSocket(sPort);//建立服务器端口,服务器将在此端口监听 } catch(IOException E) { System.out.println("发生例外: " + E); System.out.println("无法建立服务器端口!!"); System.exit(1); } this.frame = f; sStatus = frame.ServerStatus;//让窗体的文本显示处是在同一地方;该处的文本显示处和serverframe是同一地方 sStatus.append("游戏服务器已启动..\n\n"); sStatus.append(">>>>>等待连线<<<<<\n\n"); BroadCastWriter = new BroadCast(this); BroadCastWriter.start();//开启广播线程 Cleaner = new CleanDeadConnect(this); Cleaner.start();//开启清除不可用线程 } public void run() { while(true) { try { Socket cSocket = sSocket.accept();//监听客户机是否连机 ClientThread cThread = new ClientThread(cSocket,this);//实例化clientthread cThread.start();//如果连机就开启一线程来处理该客户机 sStatus.append(cThread.getClientName() + ":"); sStatus.append(cThread.getClientAddress() + "已连线 "); sStatus.append("目前连线数: " + ClientThread.ConnectNumber +"\n");//显示连机状态 synchronized(Clients)//琐住内存防止出错 { Clients.addElement(cThread);//把cThread加入Clients中并把clients尾,并把clients加一 } } catch(IOException E) { System.out.println("发生例外: " + E); System.out.println("建立客户端连线失败!"); System.exit(2); } } } public void finalize()//关闭该sSocket { try { sSocket.close(); } catch(IOException E){} sSocket = null; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -