【问题标题】:Server/client sockets服务器/客户端套接字
【发布时间】:2011-11-15 18:39:05
【问题描述】:

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

【问题讨论】:

    标签: c# client tcplistener


    【解决方案1】:

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

    【讨论】:

      【解决方案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
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 2011-08-15
        • 2017-05-26
        • 2023-03-11
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        相关资源
        最近更新 更多