0

您是否碰巧知道使用 unix socket api 的常见应用程序在连接到互联网路由器的计算机上不起作用?例如,假设有一台计算机正在运行一个使用 C 语言中的套接字的简单 Web 服务器。当另一台远程计算机中的 Web 浏览器发送请求时,Web 服务器无法发送对请求的响应,因为它的端口被互联网路由器(?)(当然,可能还有其他原因)。

但是,有能力的开发人员的通用应用程序运行良好。例如,utorrent 客户端从对等点接收到一些数据的请求并很好地响应请求,尽管运行 utorrent 的计算机连接到互联网路由器。utorrent 是否使用某些系统调用调整路由器配置?如果没有,它如何上传一些数据?

所以我的问题是

  • 使用套接字 API 的普通应用程序如何通过连接到互联网路由器完成转发其端口?

  • 我的 C 语言程序如何通过连接到互联网路由器的计算机转发其端口?

    先感谢您。

  • 4

    2 回答 2

    0

    他们没有。要在您的程序已启动的连接上发送和接收数据,不需要它。端口转发需要机器管理员手动完成,并且只需要接收新连接。

    于 2013-07-19T07:02:55.367 回答
    0

    如果您通过 NAT 路由器连接互联网,在大多数情况下,任何从 WAN 到路由器的未经请求的连接都将被拒绝。您需要告诉路由器(以某种方式)进入特定端口号或范围的未经请求的流量将被接受,并转发到特定的本地 IP 地址。这可以在您的路由器配置中手动完成,或者如果您的路由器支持UPnP,您可以使用该协议为路由器的遍历配置端口映射。

    于 2013-07-19T07:03:33.327 回答