📄 clientthread.java
字号:
import java.net.*;
import java.io.*;
import java.util.*;
// Client執行緒
public class ClientThread extends Thread {
private Socket _skt;
private BroadCastThread _broadCastThread; // 廣播執行緒
private PrintStream _printStream; // 輸出串流
private static int _clientNum = 0; // 客戶端連線數
public ClientThread(Socket skt, BroadCastThread broad) {
setDaemon(true);
_skt = skt;
_broadCastThread = broad;
try {
_printStream = new PrintStream(_skt.getOutputStream());
}
catch(IOException e) {
e.printStackTrace();
}
_clientNum++;
}
public void sendMessage(String message) {
_printStream.println(message);
}
public void run() {
BufferedReader buf = null;
String userMessage = null;
String nickName = null; // 使用者名稱
try {
buf = new BufferedReader(new
InputStreamReader(_skt.getInputStream()));
sendMessage("連線成功!請輸入使用者名稱......");
nickName = buf.readLine();
if(nickName == null)
nickName = "guest";
sendMessage(nickName + "歡迎您!目前有 " + _clientNum + " 人在線上......");
_broadCastThread.addMessage(":: " + nickName + "進入聊天室^_^" );
// 讀取客戶端訊息
while((userMessage = buf.readLine()) != null) {
// 離線指令為 /bye
if(userMessage.equals("/bye"))
break;
// add至訊息佇列
_broadCastThread.addMessage(nickName + ">>" + userMessage);
}
}
catch(IOException e) {
}
finally {
// 連線終止
_clientNum--; // 客戶連線數減一
_broadCastThread.addMessage(nickName + "出了聊天室 ^o^_Y..");
_broadCastThread.removeClientThread(this);
try {
_skt.close();
}
catch(IOException e) {
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -