2011-09-13 291 views
1

好了,所以我是套接字編程的新手,我正在製作一個將從服務器運行的遊戲。我將試着能夠讓一百個客戶端運行我的服務器。我應該爲每個客戶製作一個偵聽器實例還是一個?此外,我試圖在100個不同的端口上創建100個監聽器,但是當我運行我的服務器時,在嘗試啓動監聽器時出現錯誤。該遊戲將成爲3D RPG/MMORPG。儘管大部分遊戲邏輯都在客戶端。你認爲我應該怎麼做?服務器/客戶端套接字

回答

2

如果您打算使用TCP套接字,那麼您應該創建一個偵聽套接字(即創建一個套接字,將其綁定到特定的端口並在其上調用Listen())。然後,當你接受一個連接,並得到另一個插座,您可以用接收/從/發送數據到客戶端:

Socket socketListener; 

// create listening socket 
socketListener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
IPEndPoint ipLocal = new IPEndPoint(IPAddress.Any, 30120);  // use port 30120 
//bind to local IP Address. 
socketListener.Bind(ipLocal); 

//start listening 
socketListener.Listen(4); 
while (true) // loop that accepts client connections 
{ 
    Socket socketWorker = socketListener.Accept(); 
    HandleClientConnection(socketWorker); // your routine where you communicate with a client 
} 

而且,考慮使用異步模式插座,這將是在性能方面更高效。

0

您每個服務器端點只有一個偵聽器。偵聽器將爲使用不同端口的客戶端創建一個連接。這是你實際用於溝通的這種聯繫。