POSTをページに出力し、返されたhtmlをコンソールに出力する簡単なコンソールアプリケーションを作成しようとしています。C#ソケットプログラミング - 受信バッファーのサイズを調べる方法
私のコードは動作していますが、応答の一部しか返しません。私はそれを動作させるために把握することができる唯一の方法は、私が知っているサイズにバイトバッファを設定することは、コンテンツが返されるのに十分な大きさです。
完全な応答を受け取るには、バッファーをどれだけ大きくする必要があるかどうかチェックする必要はありますか?ここで
がコードです...
Uri uri = new Uri(@"http://bobssite/");
// Get the IPAddress of the website we are going to and create the EndPoint
IPAddress ipAddress = Dns.GetHostEntry(uri.Host).AddressList[0];
IPEndPoint endPoint = new IPEndPoint(ipAddress, 80);
// Create a new Socket instance and open the socket for communication
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
socket.Connect(endPoint);
// Attempt to send the request
int byteCount = 0;
try
{
string requestString =
"POST " + uri.PathAndQuery + " HTTP/1.1\r\n" +
"Host: " + uri.Host + "\r\n" +
"Content-Type: application/x-www-form-urlencoded\r\n" +
"Content-Length: 11\r\n" +
"\r\n" +
"user=bob";
byte[] bytesToSend = Encoding.ASCII.GetBytes(requestString);
byteCount = socket.Send(bytesToSend, SocketFlags.None);
}
catch (SocketException se)
{
Console.WriteLine(se.Message);
}
// Attempt to receive the response
if (byteCount > 0)
{
byte[] bytesReceived = new byte[256];
try
{
byteCount = socket.Receive(bytesReceived, SocketFlags.None);
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine("HELP!! --> " + e.Message);
}
// Out the html we received
string html = Encoding.ASCII.GetString(bytesReceived);
Console.WriteLine(html);
}
else
{
Console.WriteLine("byteCount is zero!");
}
Console.Read();
私は、WebクライアントまたはHttpWebRequestのを非常に簡単にこれを行うことができます知っているが、私は、Socketクラスを使用するために自分自身を強制しています。 – thiag0