从外部连接拒绝本地服务器上的连接

时间:2013-05-28 19:26:07

标签: sockets tcp

我在笔记本电脑上使用以下代码作为服务器:

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: Port forwarding

在我再次确定我的防火墙已停用之后,我已经启动了wireshark并检查了端口15000.没有任何传入,没有tcp数据包。显然数据包没有进入我的计算机并且之前被拒绝(路由器?)

我在几天前(两个星期的时间)在另一个端口上工作,我为我们正在开发的游戏托管了一台服务器。现在同样的问题,不再起作用了。

什么可能导致拒绝所有传入的连接?

1 个答案:

答案 0 :(得分:0)

我能够解决我的问题,但我不知道究竟是什么原因。我从路由器中删除了所有转发服务,并从头开始重新创建它们,现在它可以正常工作。

因此,如果有其他人遇到类似问题的话:如果你有一个Swisscom路由器删除所有自定义转发服务器并重新创建它们,也许它可以解决问题。