1
這是我的聽力功能和連接功能C#異步套接字概念
Socket Listen
public void Listen(){
IPEndPoint ep = new IPEndPoint(IPAddress.Any, PortNumber);
Listen.Bind(ep);
Listen.Listen(10);
Listen.BeginAccept(new AsyncCallback(NewConnection), null);}
public void NewConnection(IAsyncResult asyn)
{
Socket Accepted = Listen.EndAccept(asyn);
Listen.BeginAccept(new AsyncCallback(NewConnection), null);
SomeFunction(Accepted);
}
代碼工作正常,沒有任何問題 - 我跟蹤代碼,看看如何與不同的客戶工作,我理解的流程。但是,我不明白1套接字如何爲不同的客戶端提供服務。 它通過套接字在客戶端之間複用嗎?
我在MSDN上讀到Accepted
在我的代碼中只能用於已建立的連接,不能再繼續使用 - 那部分我不明白。客戶端嘗試連接到服務器套接字時實際發生了什麼? EndAccept
是否返回一個完全不同的套接字與不同的端口建立連接,並保持同一個套接字監聽同時接受更多的請求?
謝謝我會試試你說的 –
我調試2個不同的客戶端,同時試圖連接到同一臺服務器,他們都連接到不同的端口,但服務器處理它們都有相同的端口,我不明白如何 –
每個套接字(服務器和客戶端)都有一個本地端點和一個遠程端點。我相信,這些端點可能與您預期的方式不匹配。因此,如果客戶端在端口4000上連接到服務器,則客戶端的遠程端點端口爲4000,但服務器的本地端點端口可能不是4000.這是您的意思嗎? (此外,客戶端的本地端點端口有點隨意分配 - 某人理解得比我能解釋得更好,但最有可能不會是4000) – mztan