我们最近发布了一个使用Indy 10 TIdTCPServer在Delphi 2010中编写的服务器。远程现场工程师使用智能手机在预定义端口上连接到服务器。我们有一位特定的客户告诉我们,在一段时间(1天,2天)之后,客户在他的设备上获得了ECONNREFUSED(ConnectionRefused)。此时,没有一个远程工程师可以连接到服务器。任何人都知道为什么会出现这种情况?
非常感谢任何帮助。
亲切的问候
精读。
答案 0 :(得分:1)
我最初的怀疑是OnConnection OnExecute或OnDisconnect的事件处理程序死锁。
您是否正在跨连接上下文(线程)进行核心同步?
但是你需要发布你的服务器代码,以便我们检查它。
答案 1 :(得分:1)
ECONNREFUSED
表示两种可能的事情之一:
对于#1,请使用端口查看工具(例如NETSTAT或TCPView)验证服务器是否仍在运行,并且侦听端口仍处于打开状态且处于LISTENING状态。
对于#2,检查服务器的OnListenException
事件是否被触发,这表明服务器在接收来自其积压的连接时遇到问题。