2017-04-06 5 views
-1

Ce que j'essaie de faire est d'envoyer des données avec le protocole HTTP avec TcpClient. Mais j'ai fait face à un problème ici. Les données que j'ai envoyées (après les en-têtes) n'ont pas été complètement envoyées à l'application du client (par exemple, les navigateurs). Code:Envoi de données avec HTTP et TcpClient pas complètement envoyé

// Building data. 
string notfound = "NOT FOUND"; 
byte[] data = Encoding.UTF8.GetBytes(notfound); 

// Building header. 
m_responseBuilder.Append("HTTP/1.1 404 Not Found").Append(CRLF); 
m_responseBuilder.Append("Server: ETP").Append(CRLF); 
m_responseBuilder.Append("Content-Type: text/plain").Append(CRLF); 
m_responseBuilder.Append("Content-Length: ").Append(data.Length.ToString()).Append(CRLF); 
m_responseBuilder.Append(CRLF); 
byte[] header = Encoding.UTF8.GetBytes(m_responseBuilder.ToString()); 

// Sending header. 
await SendDataAsync(header); 

// Sending data. 
await SendDataAsync(data); 

Le SendDataAsync:

async Task SendDataAsync(byte[] data) 
    { 
     try 
     { 
      await m_tcpchannel.WriteAsync(data, 0, data.Length); 
     } 
     catch 
     { 
      DestroyConnection(); 
     } 
    } 

Ce que je suis:

NOT FOUN 

Quel est le problème ici?

+0

1) Pourquoi ne pas utiliser HttpListener? et 2) Bien sûr, il est cassé, yer coller votre doigt dans la soupe octet et en remuant autour. (vous ne pouvez pas coder UTF8 une image; l'encodage est pour les chaînes, c'est pourquoi c'est dans l'espace de noms System.Text). –

+0

1) Je veux apprendre abt paquets http –

+0

2) le fichier n'est pas codé en chaîne, il est envoyé directement comme octets –

Répondre

0

Oui, j'ai eu le problème. C'était le CRLF. Je l'ai écrit \ n \ r au lieu de \ r \ n ....