У меня есть простая программа клиент / сервер TCP на двух ноутбуках. Сервер должен работать нормально, так как я использую «netstat -anb», и сервер отображается как прослушивающий «0.0.0.0:102», затем мое клиентское соединение не удалось, с «192.168.10.5:102».
Порт должен совпадать, и для ip-адреса сервера я установил его на «0.0.0.0», поэтому он должен принимать любое соединение.
Когда я запускаю программу вместе на одном ноутбуке, она работает нормально. У меня проблемы с устранением неполадок. Я посмотрел пару сообщений, большинство из них предложили установить ip сервера на «0.0.0.0», что я и сделал. И "netstat -anb" показывает, что слушает.
код на стороне клиента при подключении
private void btnConnect_Click(object sender, EventArgs e)
{
client = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];
try
{
client.Connect(new IPEndPoint(ip, port));
}
catch(Exception ex) {
MessageBox.Show("Connection failed");
MessageBox.Show(ex.ToString());
return;
}
this.Text = "Connected";
}
Сторона сервера
private void btnListen_Click(object sender, EventArgs e)
{
Invoke((MethodInvoker)delegate {
statusLblOne.Text = "Listening..";
return;
});
// establish connection with socket.
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(new IPEndPoint(0, port));
server.Listen(0);
// use <acceptStream> to accept data
acceptStream = server.Accept();
txtMessage.Enabled = true;
// allocate a new thread for this acceptstream
statusLblOne.Text = "Receiving data...";
Thread th = new Thread(receiveData);
th.Start();
// close the listener socket
server.Close();
}
Я разместил код для подключения на оригинальный вопрос. В настоящий момент я был в замешательстве, я искал много постов в stackoverflow за помощью, но большинство из них сказали, что либо используют другой порт (0.0.0.0 должен работать), либо сервер не прослушивает (netstat показывает, что он слушает). Как мне подойти к этому? какую дополнительную информацию я могу предоставить для лучшей диагностики