所以,我知道这个问题会有点“模糊”,因为我不能给你任何关于这个问题的代码示例,但我会尝试解释这个问题,也许有人会认出它。
基本上,我有两个应用程序,都是用 C# 编写的。
[App A] 通过 TCP 套接字连接到 [App B] 并发送数据,[App B] 当然可以在同一个 TCP 连接上将数据发送回 [App A]。【App B】是一款已经使用了6-7年,在“生产服务器”上运行良好的应用。
问题是这样的:
如果我在本地机器上运行 [App A] 和 [App B],则 comm. 他们之间的工作就像预期的那样。
但是,如果我在服务器/远程机器上运行 [App A] 和 [App B](两者都在同一台机器上运行,但在远程服务器上运行),那么它们之间的通信将无法按预期工作。然后[App A]连接并管理向[App B]发送数据,[App B]做出相应反应并将回复发送给[App A],但[App A]从未收到回复,而是我看到TCP 连接被终止。
如果我在本地机器上运行完全相同的代码,则不会发生这种情况。
现在,如果我改为在本地机器上运行 [App A],并且 [App A] 连接到远程/服务器机器上的 [App B],那么它也可以按预期工作,即。通讯。工作和 TCP 连接保持活跃。
如果我让 [App B] 继续在远程服务器上运行,而是在远程服务器(而不是我的本地机器)上启动 [App A],那么它就不再工作了;[App A] 发送数据后,TCP 连接被终止。
在我看来,这不是代码的问题,因为它可以在本地工作,而且如果我在不同的机器上运行应用程序,对吗?
我在两台机器上运行 Windows,本地 Win 7 和远程/服务器机器上的 Win Server 2003,使用 .NET 4.0。
这会敲响警钟吗?