⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientthread.java

📁 多人聊天
💻 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 + -