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;
}
このコードは、あなたが記述した動作を表示しません。 'StartListening()'メソッドも表示してください。 – CodeCaster
私はスマートに尋ねたくはありませんが、なぜ「受け入れ」を使うのですか? 'BeginAccept'が良いでしょう。 –
@CodeCasterこんにちは、私のプログラムでも、ジャム時に "Connection Success"という単語が表示されない場合は、問題点ではないと思いますので、StartListening()にコードを投稿しませんでした。本当に必要です – twlin