代码之家  ›  专栏  ›  技术社区  ›  alansiqueira27

无法使用套接字连接到我的IP

  •  2
  • alansiqueira27  · 技术社区  · 14 年前

    服务器引发此错误 “试图反序列化空流” 当我运行服务器时,在这一行的服务器端: this.tcpListener.Start();

    这是我的Internet IP,如果我使用本地IP,它会工作。但是我想要网络IP。

    客户端:

    TcpClient tcpclnt = new TcpClient();
    Console.WriteLine("Connecting.....");
    tcpclnt.Connect("187.115.131.44", 8001);
    

    服务器端:

        public Server()
        {
            try
            {
                IPAddress ip = IPAddress.Parse("187.115.131.44");
                tcpListener = new TcpListener(ip, 8001);
                listenThread = new Thread(new ThreadStart(ListenForClients));
                listenThread.Start();
            }
    
            catch (Exception e)
            {
                Console.WriteLine("Error..... " + e.StackTrace);
                Console.ReadKey();
            } 
    
        }
    
        private void ListenForClients()
        {
            this.tcpListener.Start();
    
            while (true)
            {
                //blocks until a client has connected to the server
                TcpClient client = this.tcpListener.AcceptTcpClient();
    
                //create a thread to handle communication
                //with connected client
                Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
                clientThread.Start(client);
            }
        }
    
    3 回复  |  直到 10 年前
        1
  •  4
  •   Charlie Salts    14 年前

    当启动应用程序并在侦听端口时,运行端口转发检查 here .

    我在写网络软件时遇到了这个问题——这是一个常见的问题。

    一旦您确认这是一个端口转发问题,请转到 PortForward.com . 那里有很多资源可以帮助您配置路由器。

        2
  •  1
  •   Gregory Kornblum    14 年前

    原因很明显是你身后的防火墙和/或路由器/交换机。它需要在所述设备上更改或添加一个NAT策略。

        3
  •  1
  •   Never Quit    12 年前

    我也有同样的问题,我也在路由器和防火墙后面。我发现使用代码localhost(127.0.0.1)可以很好地工作,但是一旦我们尝试连接到远程主机,它就会给出一个错误。解决方案是按如下方式更改服务器端代码:

    tcpListener = new TcpListener(IPAddress.Any, 8001);
    

    希望这能帮助你…