📄 serverthread.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
class ServerThread extends Thread //服务器主线程
{
int sPort0,sPort1; //服务器接口
ServerSocket sSocket0,sSocket1; //服务器插座
ServerFrame frame;
BroadCastInstant BCI;
TextArea sStatus;
Vector Clients; //储存联机客户端
Vector messages; //储存客户端讯息
Vector messages1; //在线人员
Vector ptpmessage;
BroadCast BroadCastWriter; //广播讯息线程
CleanDeadConnect Cleaner; //清除中断联机线程
UDPServer udpServer;
public ServerThread(ServerFrame f)
{
Clients = new Vector(); //建立Vector实体
messages = new Vector(); //建立Vector实体
messages1 = new Vector(); //建立Vector实体
ptpmessage = new Vector(); //建立Vector实体
// messages1.addElement("0");
messages1.addElement("end"); //作为消息的结束
try
{
sPort0 = 8000;sPort1= 8001; //指定接口
sSocket0 = new ServerSocket(sPort0); //建立服务器插座
sSocket1 = new ServerSocket(sPort1);
}
catch(IOException E) //建立失败的话...
{
System.out.println("发生异常: " + E);
System.out.println("无法建立服务器插座!!");
System.exit(1); //结束程序
}
this.frame = f;
sStatus = frame.ServerStatus;
sStatus.append("==============================================ICQ服务器已启动======================================\n\n");
sStatus.append("==================================================等待联机=========================================\n\n");
BroadCastWriter = new BroadCast(this); //建立广播线程
BroadCastWriter.start(); //启动
Cleaner = new CleanDeadConnect(this); //建立清除中断联机线程
Cleaner.start(); //启动
udpServer=new UDPServer();
udpServer.run();
// try {
// udpServer.run();
// } catch (IOException e) {
// System.out.println ("IOException occurred with socket.");
// System.out.println (e);
// System.exit(1);
// }
// if(udpServer.getReceiveMsg()!=null)
// ptpmessage.addElement(udpServer.getReceiveMsg() );
}
public void run()
{
while(true) //等待建立联机的循环
{
try
{
Socket cSocket0 = sSocket0.accept(); //等待联机
Socket cSocket1 = sSocket1.accept();
//若联机成功则建立可用来和客户端沟通的线程
ClientThread cThread = new ClientThread(cSocket0,cSocket1,this);
cThread.start(); //启动线程
//在服务器窗口中加入联机讯息
sStatus.append(cThread.getClientName() + ":");
sStatus.append(cThread.getClientAddress() + "已联机 ");
sStatus.append("目前联机数: " + ClientThread.ConnectNumber +
"\n");
synchronized(Clients) //同步处理
{
Clients.addElement(cThread); //加入Vector
}
// messages1.setElementAt(ClientThread.ConnectNumber, 1);//修改第一个值(人数)
BCI=new BroadCastInstant(this);
}
catch(IOException E) //发生异常的话
{
System.out.println("发生异常: " + E);
System.out.println("建立客户端联机失败!");
System.exit(2); //离开程序
}
}
}
public void finalize()
{
try
{
sSocket0.close(); //关闭服务器程序联机
sSocket1.close();
}
catch(IOException E){}
sSocket0 = null; //释放资源
sSocket1 = null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -