1

我可以在本地计算机上运行服务器并在同一台计算机上连接到它,但是当我尝试通过 Internet 从另一台计算机连接到它时,我的服务器上没有活动迹象,也没有来自服务器的响应在我正在测试它的计算机上。我试过 XP 和 Vista,关闭防火墙,打开端口,以管理员身份运行;没有任何工作。:(

这是我用来接受传入连接的代码:


int port = 3326;
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            try
            {
                TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, port));
                listener.Start();
                Console.WriteLine("Server established\nListening on Port: {0}\n", port);
                while (true)
                {
                    socket = listener.AcceptSocket();
                    socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, outime);
                    socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
                    socket.DontFragment = true;
                    NewConnection pxy = new NewConnection(socket);
                    Thread client = new Thread(new ThreadStart(pxy.Start));
                    client.IsBackground = true;
                    client.Start();
                }
}

4

4 回答 4

8

我认为问题出在您的路由器上,而不是您的计算机上。当数据包来自 Internet 时,它应该被路由到特定的服务器。您必须配置路由器以将端口上的流量重定向3326到您的服务器。

于 2008-10-12T17:35:28.507 回答
3

你可能有东西阻塞了更高的连接。尝试从 LAN 上的另一台主机连接。如果你能做到这一点,那么操作系统本身就不会为连接设置防火墙。

如果您或您的 ISP 运行 NAT 路由器,那么您的计算机可能没有可公开访问的地址,在这种情况下,无法直接连接到它。

如果没有 NAT 路由器,某些东西可能仍会阻止上游连接。

于 2008-10-12T17:57:41.803 回答
0

我是认真的:许多 ISP 积极阻止您将家庭连接用作 Web 服务器。您可能想在投入太多时间之前给他们打电话。

于 2008-10-12T18:35:09.357 回答
-1

如果您尝试在家中托管,您的 ISP 可能会限制您。

于 2008-10-12T17:33:17.233 回答