gpt4 book ai didi

c - 来自外部 IP 地址的 Winsock2 连接

转载 作者:行者123 更新时间:2023-11-30 17:59:50 26 4
gpt4 key购买 nike

我使用msdn中的示例用C语言用winsock2编写了一个简单的char程序。它可以工作,除非我尝试通过未连接到同一路由器的计算机连接到服务器(使用外部地址网络)

我可以确定这不是计算机或路由器上的防火墙问题,我在设置 Minecraft 服务器并从外部连接到它时没有问题。

我尝试过将外部IP地址绑定(bind)到服务器,但事实证明这是不可能的。

是否有某种标志允许从外部 IP 进行连接?

最佳答案

服务器套接字只能绑定(bind)到属于它正在运行的计算机的 IP。绑定(bind)到 INADDR_ANY 即可为您处理该问题。

为了让网络外部的客户端连接到该服务器,客户端必须连接到路由器本身而不是服务器计算机上的开放 IP/端口。路由器必须配置为将其公共(public) IP/端口上的入站连接转发到服务器的 IP/端口。

例如,假设您有一个服务器套接字正在监听本地 LAN IP 为 192.168.0.1 的计算机的端口 12345,并且路由器的公共(public) IP 为 206.152.65.1。您可以将套接字绑定(bind)到 192.168.0.1:12345,然后在路由器上打开端口 12345(或任何您想要的可用端口)并定义端口转发规则以将该端口映射到 192.168.0.1:12345。现在,外部客户端可以连接到 206.152.65.1:12345,并且 192.168.0.1:12345 上的服务器将看到该连接。

更一般地说,任何定向到 206.152.65.1:12345 的网络数据包都将被调整并转发到 192.168.0.1:12345。路由器负责调整数据包 header ,以便各方认为他们正在相互通信,而不知道路由器位于中间。

关于c - 来自外部 IP 地址的 Winsock2 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com