当我运行服务器时,服务器在此行中抛出此错误 “尝试在服务器端反序列化空流” :this.tcpListener.Start();
这是我的互联网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);
}
}
答案 0 :(得分:4)
当您启动应用程序并正在侦听端口时,请运行端口转发检查here。
编写网络软件时遇到了这个问题 - 这是一个常见的问题。
一旦您确认其端口转发问题,请转到PortForward.com。有很多资源可以帮助您配置路由器。
答案 1 :(得分:1)
您明显落后的防火墙和/或路由器/交换机是原因。这需要在所述设备上更改或添加NAT策略。
答案 2 :(得分:1)
我遇到了同样的问题,我也在路由器和防火墙之后。我发现使用你的代码localhost(127.0.0.1)是完美的,但是一旦我们尝试连接到远程主机就会出错。解决方案是更改服务器端代码,如下所示:
tcpListener = new TcpListener(IPAddress.Any, 8001);
希望这会对你有帮助......