0

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

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数据包。所以很明显数据包没有到达我的电脑并且更早被拒绝(路由器?)

几天前(最多两周)我让它在另一个端口上工作,我在那里为我们正在开发的游戏托管了一个服务器。现在同样的问题,已经不行了。

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

4

1 回答 1

0

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

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

于 2013-05-28T19:55:12.343 回答