2

所以,我知道这个问题会有点“模糊”,因为我不能给你任何关于这个问题的代码示例,但我会尝试解释这个问题,也许有人会认出它。

基本上,我有两个应用程序,都是用 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。

这会敲响警钟吗?

4

2 回答 2

0

在黑暗中刺伤,因为没有什么可做的。我的随机猜测是 App A 或 App B 使用的端口之一正在服务器/远程机器上使用。相同的端口可能在您的本地计算机上免费可用,因此您不会观察到相同的行为。

于 2013-02-23T20:57:25.520 回答
0

听起来很像运行 App A 的服务器具有本地防火墙设置或物理防火墙,阻止来自 App B 的服务器的入站连接。

检查您正在侦听的端口,连接类型(TCP 或 UDP)是否允许入站连接。

于 2013-02-23T20:51:56.480 回答