連線建立後,透過 `NetworkStream` 讀取傳入資料:
// 接收訊息後的處理範例
txtStatus.Text += "\r\n" + strDisplayMessageType + strWriteText.TrimStart(new char[] {'\r','\n'});
SocketServer 類別定義三大核心事件,解耦網路層與 UI 層:
public event ClientConnectedEventHandler ClientConnected;
public event ClientDisconnectingEventHandler ClientDisconnecting;
public event MessageReceivedEventHandler MessageReceived;
// 客戶端建立連線
IPEndPoint serverEndpoint = new IPEndPoint(ipaAddress, iPort);
tcpClient = new TcpClient();
tcpClient.Connect(serverEndpoint);
thrListenForMessages = new Thread(new ThreadStart(ListenForMessages));
thrListenForMessages.Start();
// ListenForMessages 內部迴圈
// 持續呼叫 NetworkStream.Read() 封鎖等待資料
// 讀取後封裝為 Message 物件觸發事件
網路執行緒收到訊息後,必須透過 `Invoke` 切回 UI 執行緒更新介面:
this.Invoke(createNewClientDelegate, new object[] { receivedMessage });
此設計模仿 MSN/YM 架構,支援多視窗並行會話。