服务器/客户端套接字

时间:2011-09-13 00:50:06

标签: c# client tcplistener

好的,所以我是套接字编程的新手,我正在制作一款将从服务器运行的游戏。我将尝试让一百个客户端运行我的服务器。我应该为每个客户制作一个监听器实例还是一个?此外,我试图在100个不同的端口上制作一百个听众,但是当我运行我的服务器时,我在尝试启动我的听众时遇到错误。该游戏将成为3D RPG / MMORPG。大多数游戏逻辑都在客户端。你觉得我应该怎么做?

2 个答案:

答案 0 :(得分: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
}

另外,考虑在异步模式下使用套接字,这在性能方面会更有效。

答案 1 :(得分:0)

每个服务器端点只有一个侦听器。然后,侦听器将为使用其他端口的客户端创建连接。这是您实际用于通信的连接。