2010-11-25 11 views
2

Je travaille sur un serveur pour le jeu Minecraft, qui affiche un écran rouge foncé lorsque le lecteur est déconnecté. Je déconnectant les joueurs comme ceci:C# La prise ne se déconnecte pas correctement

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

me semble être incapable d'écrire des données après, mais l'écran déconnecté n'apparaît pas. Il n'apparaît que lorsque je termine complètement l'application serveur, ce qui indique que la connexion n'est pas fermée du tout.

Qu'est-ce que je fais mal?

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); 
+0

Comment détecter la déconnexion dans le client? – jgauffin

+0

Je n'ai pas écrit le client. – Overv

Répondre

1

Je ne sais pas ce que l'API ressemble pour Minecraft, mais les chances sont qu'il ya une commande que vous devez envoyer au client d'abord, pour leur faire savoir qu'ils ont été déconnectés.

+2

Hahaha, c'est tellement drôle! – leppie

+0

Oui, mais qu'en est-il de la déconnexion pour l'utilisation du mauvais protocole? Je ne comprends pas pourquoi la fermeture de l'application peut y arriver, mais mon code ne peut pas. – Overv

+0

Une autre pensée: Quelle prise débranchez-vous? Déconnectez-vous l'auditeur ou celui qui parle au client? Peut-être que si vous postez plus de votre code, nous pourrions le comprendre. –

0

Qu'en est-il de Socket.Disconnect()?

+0

Cela n'a pas fonctionné. – Overv

Questions connexes