我在笔记本电脑上使用以下代码作为服务器:
WSADATA wsd = { 0 };
WSAStartup(MAKEWORD(2, 0), &wsd);
SOCKET s = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN sin = { 0 };
sin.sin_family = AF_INET;
sin.sin_port = htons(15000);
sin.sin_addr.s_addr = inet_addr("0.0.0.0");
bind(s, (const sockaddr*)&sin, sizeof(sin));
listen(s, 10);
int len = sizeof(SOCKADDR_IN);
SOCKET a = accept(s, (sockaddr*)&sin, &len);
在我的手机上运行以下代码:
Socket s = new Socket();
try {
s.connect(new InetSocketAddress("*.*.*.*", 15000));
Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
我使用telnet在我的网络中的另一台计算机上使用我的公共IP。可悲的是,我收到以下异常消息:
failed to connect to /*.*.*.* (port 15000): connect failed: ECONNREFUSED (Connection refused)
好吧,我在路由器中重新检查了我的设置,ipconfig给了我192.168.1.109作为我的笔记本电脑IP,如下图所示,端口转发到该IP:
在我再次确定我的防火墙已停用之后,我已经启动了wireshark并检查了端口15000.没有任何传入,没有tcp数据包。显然数据包没有进入我的计算机并且之前被拒绝(路由器?)
我在几天前(两个星期的时间)在另一个端口上工作,我为我们正在开发的游戏托管了一台服务器。现在同样的问题,不再起作用了。
什么可能导致拒绝所有传入的连接?
答案 0 :(得分:0)
我能够解决我的问题,但我不知道究竟是什么原因。我从路由器中删除了所有转发服务,并从头开始重新创建它们,现在它可以正常工作。
因此,如果有其他人遇到类似问题的话:如果你有一个Swisscom路由器删除所有自定义转发服务器并重新创建它们,也许它可以解决问题。