HTTP sur C# sockets

Je suis en train d'envoyer la requête HTTP et de recevoir des responce à partir du serveur C# sockets, et je suis de nouveau avec cette langue.

J'ai écrit la suite code (IP réglée correctement):

IPEndPoint RHost = new IPEndPoint(IP, Port);
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(RHost);

String HTTPRequestHeaders_String = "GET ?q=fdgdfg HTTP/1.0
Host: google.com
Keep-Alive: 300
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16
Referer: http://google.com/";

MessageBox.Show(HTTPRequestHeaders_String, "Request");

byte[] HTTPRequestHeaders = System.Text.Encoding.ASCII.GetBytes(HTTPRequestHeaders_String);
socket.Send(HTTPRequestHeaders, SocketFlags.None);

String Response = "";
byte[] buffer = new byte[(int) socket.ReceiveBufferSize];

int bytes;
do
{
    //On this lane program stops to react
    bytes = socket.Receive(buffer);
    //This line cannot be reached, tested with breakpoint
    Response += Encoding.ASCII.GetString(buffer, 0, bytes);
}
while (bytes >= 0);

MessageBox.Show(Response, "Response");

Ce que je fais mal? J'ai besoin juste de charge complet HTML de la page, ou au moins quelques-uns des personnages de réponse (je ne peux pas faire de même).

Utiliser le HttpWebRequest classe.
J'irais même plus loin - WebClient...
J'ai besoin de créer requête HTTP en-têtes comme une chaîne de caractères, est-il possible dans ces classes?
Pourquoi avez-vous besoin pour créer les en-têtes de requête HTTP manuellement?
vous pouvez ajouter des en-têtes comme une chaîne de caractères, voir ma réponse ci-dessous

OriginalL'auteur Andrew Dryga | 2011-10-17