我在笔记本电脑上使用以下代码作为服务器:
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();
}
我在我的网络中的另一台计算机上用我的公共 IP 使用了相同的 telnet。可悲的是,我收到以下异常消息:
failed to connect to /*.*.*.* (port 15000): connect failed: ECONNREFUSED (Connection refused)
好吧,我重新检查了路由器中的设置,ipconfig 给了我 192.168.1.109 作为我的笔记本电脑 IP,如下图所示,端口被转发到该 IP:
在我再次确定我的防火墙被停用后,我启动了wireshark并检查了端口15000。没有任何传入,没有tcp数据包。所以很明显数据包没有到达我的电脑并且更早被拒绝(路由器?)
几天前(最多两周)我让它在另一个端口上工作,我在那里为我们正在开发的游戏托管了一个服务器。现在同样的问题,已经不行了。
什么可能导致所有传入连接被拒绝?