1

如果我创建一个 C++ 服务器/客户端应用程序,我用来通信的端口是否需要在服务器和客户端机器的路由器上打开

或者我还能采取什么其他方法?客户端计算机需要从服务器接收信息,但我无法打开任何端口,因为它位于学校网络上....

[编辑]

嗯,我的设置是在服务器上运行的 php 页面,当我按下 hello 时,服务器通过 php 建立 ssh 连接并向机器发送 shell 命令。该服务器正在运行学校服务器,我确实可以通过 ssh 访问并从那里运行我所有的东西。客户端计算机将是我的电脑,它在未连接到服务器的学校 wifi 上运行。服务器将尝试与我的计算机的公共 ip 建立 ssh 连接,该计算机在学校 wifi 之外运行(没有端口打开/可以 ssh 输出,但没有 ssh 输入)。您提到的这些方法是否可以实现这一点,特别是 connect.c,因为我无法从服务器上运行 putty,而我可以从 php 调用 connect.c。

4

2 回答 2

0

语言的选择在这里是无关紧要的。

任何路由器都不需要“打开”端口,除非您的流量必须通过它。在同一网络(或子网)中的普通对等主机上几乎不会有任何防火墙策略,即使在学校中也是如此。

从技术上讲,交换机可以阻止 peer-2-peer 流量(意味着流量不是发往传出网关的),但这并不常见。

当然,如果学校不允许大多数端口上的出站 (WAN) 流量,那么运气不好,他们是绝对正确的 :)

你可以看看

都很容易用谷歌搜索

于 2011-04-04T21:22:32.610 回答
0

要建立 TCP/IP 连接,客户端只需访问服务器端口即可。连接是全双工的,因此数据可以从客户端流向服务器,反之亦然。

如果您在应用程序中使用 UDP(一种无连接协议),那么会发生什么在很大程度上取决于防火墙或路由器,以及它是否为您的服务执行连接跟踪。

除非您提供有关您的服务以及客户端和服务器端的网络设置的一些额外信息,否则我们无法提供更具体的信息。

于 2011-04-04T21:22:42.957 回答