C#套接字没有正确断开连接

时间:2010-11-25 18:24:13

标签: c# .net sockets disconnect

我正在为游戏 Minecraft 服务器,当玩家断开连接时会显示一个暗红色的屏幕。我正在断开像这样的球员:

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 个答案:

答案 0 :(得分:1)

我不知道对于Minecraft来说API是什么样的,但很可能首先需要向客户发送命令,让他们知道他们已经断开连接。

答案 1 :(得分:0)

Socket.Disconnect()怎么样?