Unix Socket C:从另一个网络连接

时间:2014-06-22 13:57:05

标签: c sockets unix tcp

我开始学习如何使用tcp套接字在C中配置unix服务器/客户端基础应用程序,现在的问题是,我总是使用我选择的端口从客户端连接到服务器服务器和(本地?)地址,如192.168.1.X.老实说我对此一无所知,我认为192是一个本地接口地址,因此连接只能在同一个网络中实现,我也试过两台PC,但仍然在同一个网络中。那个来自另一个网络的连接怎么样?这是一件复杂的事情吗?我想只是将我的网络提供商IP传递给客户端就不能完成这项工作

3 个答案:

答案 0 :(得分:1)

通常在这种情况下,您在浏览器中打开路由器配置网页,并在“端口转发/触发”部分输入将LAN外部的连接重定向到LAN上给定计算机上某个端口的条目,例如:

#   Service Name          Start Port    End Port    Server IP Address
    1   myServerOnPort9875  9875          9875      192.168.1.7

鉴于您的外部IP是89.75.140.30,您现在可以从任何地方连接

telnet 89.75.140.30 9875

到达本地计算机192.168.1.7上的端口9875,假设服务器正在侦听0.0.0.0表示IPv4,0 :: 0表示IPv6。

答案 1 :(得分:0)

如果您在服务器端获得了静态全局IP,则只需服务器的IP就足够了。但是,有时网络提供商使用NAT,它会分配私有IP,而所有通信都是通过网络提供商的网关IP进行的。在这种情况下,网络提供商应将您要使用的特定端口转发到您的计算机(可能他们不会)。否则,您的服务器将无法与网络提供商网络外的客户端通信。

答案 2 :(得分:0)

IP地址192.168.1.x是私人使用范围之一的地址,通常用于具有WiFi路由器的家庭网络。您应该能够从该网络内部进行连接(取决于确切的网络设置),但不能从外部进行连接。