服务器响应没有被接收

我有一个Python程序,通过套接字连接发送请求到本地的第三方应用程序,然后转发我的请求到服务器。 服务器响应然后通过第三方应用程序返回到我的套接字。 一切都已经正常工作了好几个月,服务器的回复是即时的。

本周二本周,服务器的突然响应似乎不偶尔返回。 答案通常是即时的,但现在有20%的查询没有响应2分钟之后,我收到一条错误消息,说我无法检索请求的数据。

我已经检查过服务器的人,他们正在收到我的请求,但由于某种原因,其中一小部分我没有收到答复。

我testing了一个不同的互联网连接(3g),它使用了不同于我的DSL线路的ISP。 这个问题在使用3g时似乎已经解决了,所以看起来问题可能在于我的DSL线或者我的ISP(节stream端口)?

我不知道如何解决这个问题。 我不是一个networking人,所以请记住任何故障排除build议。 我可以在Linux或Windows上testing这个,所以两者的build议都很好。

您需要确保您使用的是TCP套接字数据包,而不是UDP。 所以有一个重试,因为大多数ISP会丢弃数据包来限制线路。

如果使用UDP,则TCPIP堆栈将不会重试发送数据包,因为UDP不需要ACK。 切换到TCP将增加一个小的开销,因为需要返回确认。