我对套接字编程和TCP通信很陌生,我正在开发一个应用程序,该应用程序应该接收来自访问服务器但没有互联网连接的计算机的请求(网站urls),然后它应该将网站发送到客户端作为响应。到目前为止,我已经能够成功地侦听请求,但是当我试图发送响应时,浏览器会挂起。
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
TcpListener listener = new TcpListener(ipAddress, 500);
listener.Start();
while (true)
{
Socket client = listener.AcceptSocket();
Console.WriteLine("Connection accepted.");
var childSocketThread = new Thread(() =>
{
byte[] data = new byte[100];
int size = client.Receive(data);
Console.WriteLine("Recieved data: ");
for (int i = 0; i < size; i++)
Console.Write(Convert.ToChar(data[i]));
// Reading the website in bytes using WebCLient
client.Send(RESPONSE) // Here I call the send
client.Close();
});
childSocketThread.Start();
}
listener.Stop();我到底做错了什么,我如何解决这个问题(将响应发送回客户端)?
发布于 2015-02-26 05:53:40
如果您想要编写HTTP代理,则必须遵循HTTP规范中对代理的所有要求。例如:
代理服务器必须与它所连接的客户端和源服务器(或其他代理服务器)分别发出持久连接的信号。每个持久连接只适用于一个传输链路。
以及:
代理服务器不能与HTTP/1.0客户端建立HTTP/1.1持久连接(有关许多HTTP/1.0客户端实现的“保持活动”报头问题的信息和讨论,请参阅RFC 2068 33 )。
以及:
HTTP代理是一个极其复杂的庞然大物,对于那些没有编写网络代码经验的人来说,这可能是最糟糕的选择。
https://stackoverflow.com/questions/28734726
复制相似问题