代码之家  ›  专栏  ›  技术社区  ›  Overv

插座未正确断开

  •  2
  • Overv  · 技术社区  · 14 年前

    我在为游戏服务器工作 我的世界 ,当播放机断开连接时,显示暗红色屏幕。我正在断开这样的玩家:

    Socket.Shutdown( SocketShutdown.Both );
    Socket.Close();
    

    之后我似乎无法写入数据,但断开连接的屏幕不会出现。它只在我完全终止服务器应用程序时出现,这表示连接根本没有关闭。

    我做错什么了?

    编辑:

    socket.BeginAccept( new AsyncCallback( AcceptClient ), null );
    
    private void AcceptClient( IAsyncResult result )
        {
            try
            {
                // Initialize player
                Socket client = _socket.EndAccept( result );
    

    .

    Log( "Received unrecognized packet from " + player.IPAddress() + ", disconnecting client!" );
    
    player.Disconnect();
    _clients.Remove( player );
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Mike Caron    14 年前

    我不知道Minecraft的API是什么样子,但可能有一个命令需要先发送给客户机,让他们知道他们已经断开连接。

        2
  •  0
  •   leppie    14 年前

    那怎么办 Socket.Disconnect() ?

    推荐文章