2017-04-05 8 views
0

私のプログラムはブロック待ちのためにAccept()で停止し、受け入れられたソケットを処理するための新しいスレッドを開始します。 パケットスニッファーツールを使用してサーバーにデータが受信されたことを確認しましたが、 が、Enterキーを押すまでサーバープログラムが停止していますが、クライアントが正常にサーバーに接続してデータを送信することがあります。私がキーを押すまでソケットのAccept()がブロックされる

Enterキーを押すと、以前に送信されたすべてのデータが処理されます。

私のプログラムにはConsole.Read()はありません。ここで

は私のコードです:

static Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
public static int Main(String[] args) 
{ 
    listener.ReceiveTimeout = 10000; 
    listener.SendTimeout = 10000; 
    listener.Bind(localEndPoint); 
    listener.ReceiveBufferSize = 51200; 
    listener.SendBufferSize = 1283; 
    listener.Listen(30); 
    while(true) { 
     Socket clientSocket = listener.Accept(); 
     Console.WriteLine("Connection Success"); 
     var thread = new Thread(() => StartListening(clientSocket)) { 
      IsBackground = true 
     }; 
     thread.Start(); 
    } 
    return 0; 
} 
+0

このコードは、あなたが記述した動作を表示しません。 'StartListening()'メソッドも表示してください。 – CodeCaster

+0

私はスマートに尋ねたくはありませんが、なぜ「受け入れ」を使うのですか? 'BeginAccept'が良いでしょう。 –

+0

@CodeCasterこんにちは、私のプログラムでも、ジャム時に "Connection Success"という単語が表示されない場合は、問題点ではないと思いますので、StartListening()にコードを投稿しませんでした。本当に必要です – twlin

答えて

0

私はコンソールをクリックすると、コンソールがこのような選択モードになりますことを発見:すべての関数はなり

Select mode

停止したので、私は "クイック編集モード"を終了すると、問題が解決されたようです。

setting page

関連する問題