使用 HTTP 和 TcpClient 发送数据未完全发送
Sending data with HTTP and TcpClient not completely sent
我想做的是使用 TcpClient 通过 HTTP 协议发送数据。但是我在这里遇到了一个问题。我发送的数据(在 headers 之后)没有完全发送到客户端的应用程序(例如浏览器)。代码:
// 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);
SendDataAsync:
async Task SendDataAsync(byte[] data)
{
try
{
await m_tcpchannel.WriteAsync(data, 0, data.Length);
}
catch
{
DestroyConnection();
}
}
我得到了什么:
NOT FOUN
这里有什么问题吗?
是的,我遇到了问题。这是 CRLF。我写的是 \n\r 而不是 \r\n.....
我想做的是使用 TcpClient 通过 HTTP 协议发送数据。但是我在这里遇到了一个问题。我发送的数据(在 headers 之后)没有完全发送到客户端的应用程序(例如浏览器)。代码:
// 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);
SendDataAsync:
async Task SendDataAsync(byte[] data)
{
try
{
await m_tcpchannel.WriteAsync(data, 0, data.Length);
}
catch
{
DestroyConnection();
}
}
我得到了什么:
NOT FOUN
这里有什么问题吗?
是的,我遇到了问题。这是 CRLF。我写的是 \n\r 而不是 \r\n.....