特定のリクエストをインターネットサーバーに送信して応答を受信する単純なソケットを作成しましたが、リクエストが送信され、ソケットが受信モードに移行すると、戻り値の結果が完全ではない場合に問題が発生します。
Socket skt = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
skt.Connect(hdr.Host, 80);
byte[] req_as_bytes = Encoding.UTF8.GetBytes(RequestParam);
SentLength = skt.Send(req_as_bytes);
skt.Send(Data, SocketFlags.None);
ReturnLength = skt.Receive(Data);
skt.Shutdown(SocketShutdown.Both);
skt.Close();
しかし、skt.recive() の前にスリープ状態にすると、このコードのようにデータがサーバーから完全に受信されます
Socket skt = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
skt.Connect(hdr.Host, 80);
byte[] req_as_bytes = Encoding.UTF8.GetBytes(RequestParam);
SentLength = skt.Send(req_as_bytes);
skt.Send(Data, SocketFlags.None);
System.Threading.Thread.Sleep(4000);
ReturnLength = skt.Receive(Data);
skt.Shutdown(SocketShutdown.Both);
skt.Close();
この問題を解決するための最良の解決策は何ですか