首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# TCP Socket 程式設計(一):WinForm 啟動偵聽執行緒與 Listener 建立

     編輯:關於C語言

架構模型

  • WinForm:啟動偵聽執行緒、監控連線狀態、定期清理閒置連線。
  • Listener:執行 Accept() 迴圈,建立新 Connection 執行緒處理會話。
  • Connection:處理單一連線的收發訊息。

WinForm 啟動偵聽執行緒

private void btn_startServer_Click(object sender, EventArgs e)
{
    Thread createServer = new Thread(WaitForConnect);
    createServer.Start();
}

private void WaitForConnect()
{
    SocketListener listener = new SocketListener(Convert.ToInt32(txt_port.Text));
    listener.StartListening();
}

偵聽迴圈為阻塞操作,必須在獨立執行緒執行,否則 UI 會凍結。

Listener 建立端點並進入 Accept 迴圈

IPEndPoint localEndPoint = new IPEndPoint(_ipAddress, _port);
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(20); // 待連佇列長度

while (true)
{
    Socket connection = listener.Accept(); // 阻塞等待新連線
    Logger.Log("Connect", connection.RemoteEndPoint.ToString());
    // 建立 Connection 物件與執行緒(見下篇)
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved