【发布时间】:2015-02-26 13:53:40
【问题描述】:
我是套接字编程和 TCP 通信的新手,我正在开发一个应用程序,该应用程序应该从可以访问服务器但没有互联网连接的计算机接收请求(网站 url),然后它应该发送网站给客户作为回应。到目前为止,我已经能够成功收听请求,但是当我尝试发送响应时,浏览器会挂起。
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();
我到底做错了什么,我该如何解决这个问题(将响应发送回客户端)?
【问题讨论】:
-
HANG 是什么意思?为什么你使用线程来发送响应?有什么具体原因吗
-
@KcDoD:嗯,我在这个主题上处于世界水平,所以如果你知道什么,请与我分享,我想了解一下。
-
好吧,我觉得你想要的是一个线程连接(可能是)..尝试在线程启动之后放置 childSocketThread.Join() 。还可以在 AcceptSocket 之前使用控制台写行来验证代码是否到达那里,执行并告诉更新:)
-
什么是
RESPONSE?确保它是对您收到的特定查询的适当响应的逻辑在哪里?为什么你会选择一个现存的最复杂的东西(一个 HTTP 代理)作为你第一次涉足套接字编程?!首先阅读the standard 并仔细研究其中提到的每一个代理。