2010-11-25 11 views
2

私はゲームのサーバーで作業していますMinecraft、プレーヤーが接続されていないときは暗赤色の画面が表示されます。私はこのようなプレーヤーを切断しています:C#ソケットが正しく切断されない

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

クライアントでの切断をどのように検出しますか? – jgauffin

+0

私はクライアントを書いていません。 – Overv

答えて

1

私はAPIは、Minecraftのためにどのようなものか知らないが、オッズは、あなたが、彼らが切断されてきた知っているように、最初のクライアントに送信する必要があるコマンドがあることです。

+2

ハハハ、これはとても面白いです! – leppie

+0

間違ったプロトコルを使用している場合は切断されますか?なぜアプリケーションを閉じるとそれが起こるのか理解できませんが、私のコードではできません。 – Overv

+0

もう1つの考え:どのソケットを切断していますか?リスナーまたはクライアントとの通話を切断していますか?たぶんコードをもっと投稿すると分かります。 –

0

Socket.Disconnect()

+0

それは動作しませんでした。 – Overv

関連する問題