У меня есть небольшое клиентское приложение TCP Client, которое не может подключиться и выдает ошибку тайм-аута, и я могу понять, почему.
Я получаю ошибку
System.Net.Sockets.SocketException (0x80004005): Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не смог ответить 161.242.249.63:5000 в System.Net. Sockets.TcpClient..ctor (String hostname, Int32 port)
Ниже приведен список шагов, которые я пробовал:
пробовал как клиентские, так и серверные приложенияна одном и том же ПК это будет работать, но если приложения находятся на разных компьютерах, чем, по-моему, не удается установить соединение из-за тайм-аута.
Я могу пропинговать оба компьютера по имени иАйпи адрес. IPv6 также был отключен. ПК соединены кабелем Cat5e Ethernet примерно на полметра.
Я проверил все правила брандмауэра и разрешил трафик через порт 5000 на обоих компьютерах
На CMD я подтвердил, что порт слушает, используя netstat-a
с помощью Putty, я могу telnet с любой машины и установить соединение с сервером
Я не уверен, почему я не могу сделатьсоединение из моего клиентского приложения
Код сервера
//string IP = ServerSocket.getIP();
string IP = "161.242.249.63";
IPAddress localAdd = IPAddress.Parse(IP);
Console.WriteLine("IP Address is :" + IP);
TcpListener listener = new TcpListener(localAdd, 5000);
listener.Start();
while (true)
{
//---incoming client connected---
TcpClient client = listener.AcceptTcpClient();
//---get the incoming data through a network stream---
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
//---read incoming stream---
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
//---convert the data received into a string---
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Data Received");
string[] data = dataReceived.Split(',');
data[2]= data[2].Remove(data[2].Length-1);
bool validate = ValidateAgainstADAndGroup(data[0], data[1], data[2]);
if (validate)
{
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes("*");
//---write back the text to the client---
Console.WriteLine("Sending back : OK " );
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
client.Close();
}
else
{
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes("!");
//---write back the text to the client---
Console.WriteLine("Sending back : Error");
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
client.Close();
}
Код клиента
TcpClient client = new TcpClient("10.248.37.62", 5000);
NetworkStream nwStream = client.GetStream();
byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(message);
//send data
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
//---read back the text---
byte[] bytesToRead = new byte[client.ReceiveBufferSize];
int bytesRead = nwStream.Read(bytesToRead, 0, client.ReceiveBufferSize);
// Console.WriteLine("Received : " + Encoding.ASCII.GetString(bytesToRead, 0, bytesRead));
client.Close();
Буду рад, если кто-нибудь сможет помочь с этим?