?? serverthread.java
字號(hào):
import java.net.*;
import java.util.*;
import java.io.*;
public class ServerThread extends Thread //服務(wù)器監(jiān)聽(tīng)端口線程
{
//聲明ServerSocket類對(duì)象
ServerSocket serverSocket;
//指定服務(wù)器監(jiān)聽(tīng)端口常量
public static final int PORT = 8765;
//創(chuàng)建兩個(gè)Vector對(duì)象,分別用于存儲(chǔ)客戶端連接的Socket對(duì)象
Vector clients;
Vector messages;
BroadCast broadcast; //聲明BroadCast類對(duì)象
String ip;
InetAddress myIPaddress=null;
public ServerThread()
{
//創(chuàng)建兩個(gè)Vector數(shù)組尤為重要,clients負(fù)責(zé)存儲(chǔ)多個(gè)客戶端與服務(wù)器的連接
//messages負(fù)責(zé)存儲(chǔ)服務(wù)器接收到的全部客戶端的信息
clients=new Vector();
messages=new Vector();
try
{
//創(chuàng)建ServerSocket類對(duì)象
serverSocket = new ServerSocket(PORT);
}
catch(IOException E){}
//獲取本地服務(wù)器地質(zhì)信息
try { myIPaddress=InetAddress.getLocalHost();}
catch (UnknownHostException e) {}
ip=String.valueOf(myIPaddress);
Sever.jTextArea1.append("服務(wù)器地址:"+ip+":"+String.valueOf(serverSocket.getLocalPort())+"\n");
//創(chuàng)建廣播信息線程并啟動(dòng)
broadcast = new BroadCast(this);
broadcast.start();
}
//注意:一旦監(jiān)聽(tīng)到有客戶端請(qǐng)求,就創(chuàng)建一個(gè)ClientThread來(lái)維持服務(wù)器與這個(gè)客戶端的連接
public void run()
{
while(true)
{
try
{
//獲取客戶端連接
Socket socket = serverSocket.accept();
//創(chuàng)建ClientThread線程并啟動(dòng)
ClientThread clientThread=new ClientThread(socket,this);
clientThread.start();
if(socket!=null)
{
synchronized (clients)
{
//將客戶端連接加入到Vector數(shù)組中保存
clients.addElement(clientThread);
}
}
}
catch(IOException E)
{
System.out.println("發(fā)生異常:"+E);
System.out.println("建立客戶端聯(lián)機(jī)失敗!");
System.exit(2);
}
}
}
public void finalize() //關(guān)閉serverSocket方法
{
try
{
serverSocket.close();
}
catch(IOException E){}
serverSocket=null;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -