Разъем C # не отключается должным образом - PullRequest
2 голосов
/ 25 ноября 2010

Я работаю на сервере для игры Minecraft , который показывает темно-красный экран при отключении игрока. Я отключаю игроков, как это:

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

Кажется, я не могу записать данные после этого, но отключенный экран не появляется. Оно появляется, только когда я полностью завершаю серверное приложение, что указывает на то, что соединение вообще не закрыто.

Что я делаю не так?

Edit:

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 ]

1 голос
/ 25 ноября 2010

Я не знаю, как выглядит API для Minecraft, но есть вероятность, что есть команда, которую нужно сначала отправить клиенту, чтобы сообщить им, что они отключены.

0 голосов
/ 25 ноября 2010

А как же Socket.Disconnect()?

...