socket.Receive 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败

发布于 2022-09-01 17:28:08 字数 3035 浏览 11 评论 0

问题描述:
在使用socket获取网页HTML的时候,经常出现这样的错误,
实在是不知道为什么?

多次测试也找不到原因,
今天在本地搭建了一WEB服务器,然后使用Socket 获得http://localhost/ 返回的内容,依然出现了下面的错误。

而使用浏览器来访问 http://localhost/ 的时候一切都是正常的。

这就很奇怪。

在 socket.Receive(buffer, 0, Buffer_Size, SocketFlags.None); 的时候发生

异常:已引发: "由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。"
(System.Net.Sockets.SocketException) 引发了一个
System.Net.Sockets.SocketException:
"由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。" 时间: 2015/6/25 21:29:42 线程:
<无名称>[10136]


List<byte> ReceiveAllData(Socket socket) { int zero_times = 0; int zero_max = 3; List<byte> list = new List<byte>(); int nowContentLength = 0; byte[] buffer = new byte[Buffer_Size]; while (true) { //此处经常出现错误,搞不懂 int receiveCount = socket.Receive(buffer, 0, Buffer_Size, SocketFlags.None); if (receiveCount > 0) { zero_times = 0; for (int i = 0; i < receiveCount; i++) { list.Add(buffer[i]); } nowContentLength += receiveCount; } if (receiveCount == 0) { zero_times++; if (zero_times >= zero_max) { break; } } } return list; } public HttpData GetData(Socket socket) { List<byte> list_data = ReceiveAllData(socket); ///其它代码。。。。。。。 return null; } public HttpData GetData(IPEndPoint address, byte[] headersData) { HttpData data = null; using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.ReceiveTimeout = receiveTimeout; socket.SendTimeout = sendTimeout; int loopTimes = 0; int loopTimesMax = 2; loop: if (!socket.Connected) { socket.Connect(address); } if (!socket.Connected) { loopTimes++; if (loopTimes < loopTimesMax) { goto loop; } } if (socket.Connected) { socket.Send(headersData); data = GetData(socket); socket.Shutdown(SocketShutdown.Both); } } return data; }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

土豪 2022-09-08 17:28:08

我有个疑惑localhost是个文件吗?还是它自动访问了localhost/index.html或者localhost/default.html
你打开F12看看确认你访问的地址是否跟你的Socket一样

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文