我有一个C ++程序侦听端口2222上的传入套接字连接。 当我单击按钮时,我有一个Adobe AIR / Flex应用程序尝试连接它。
当我通过Intranet连接到我的套接字时,我的C ++程序会听到并接受传入的套接字连接并且Everything正常工作:
var Sock:Socket=new Socket("192.168.1.100",2222);
但是当我尝试使用我的真实IP连接时,我收到错误#2031:
var Sock:Socket=new Socket("76.18.24.118",2222);
这两个程序都在我的笔记本电脑上运行。我在路由器后面,但已配置该端口转发路由器,以便端口2222映射到我的笔记本电脑。
我想念的是什么?我对此非常陌生,所以也许我错过了一些对你聪明的事情。
答案 0 :(得分:2)
错误代码的含义是什么(请参阅socket的文档) 你确定接收服务器进程还活着吗?
传统的起点是Beej's guide
答案 1 :(得分:1)
端口转发并不意味着您可以使用外部IP地址,您的笔记本电脑仍然在私有192.168网络上。这意味着当有人试图在78.18.24.118:2222连接时,路由器将IP地址转换为192.168.1.100:2222。这有效地允许您在网络中运行服务器,但允许外部客户端连接到您。
查看DNAT以获取更多信息。