
Ich habe ein einfaches TCP-Client/Server-Programm auf zwei Laptops. Der Server sollte einwandfrei funktionieren, wenn ich „netstat -anb“ verwende und der Server als lauschend angezeigt wird, „0.0.0.0:102“, dann ist meine Client-Verbindung mit „192.168.10.5:102“ fehlgeschlagen.
Der Port sollte übereinstimmen und für die Server-IP-Adresse habe ich sie auf „0.0.0.0“ eingestellt, sodass jede Verbindung akzeptiert werden sollte.
Wenn ich das Programm zusammen auf einem Laptop laufen lasse, funktioniert es einwandfrei. Ich habe Schwierigkeiten bei der Fehlersuche. Ich habe mir ein paar Beiträge angesehen, die meisten schlugen vor, die Server-IP auf „0.0.0.0“ zu setzen, was ich getan habe. Und „netstat -anb“ zeigt, dass es zuhört.
Clientseitiger Code bei Verbindung
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";
}
Serverseite
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();
}
Ich habe den Code für die Verbindung bei der ursprünglichen Frage gepostet. Ich bin gerade wirklich etwas verwirrt, ich habe viele Posts auf Stackoverflow nach Hilfe durchsucht, aber die meisten sagten, entweder man solle einen anderen Port verwenden (0.0.0.0 sollte funktionieren) oder der Server hört nicht zu (Netstat zeigt an, dass er zuhört). Wie soll ich das angehen? Welche weiteren Informationen kann ich zur besseren Diagnose bereitstellen?