Я использовал другие приложения для каждого слушателя и клиента, и то же самое происходит, когда слушатель stream.read () читает только один раз, а клиент stream.write () пишет только один раз.
вот цикл Слушателя:
while (true)
{
Console.Write("Waiting for a connection... ");
// Perform a blocking call to accept requests.
TcpClient client = server.AcceptTcpClient();
Console.WriteLine("Connected!");
data = null;
// Get a stream object for reading and writing
NetworkStream stream = client.GetStream();
int i;
// Loop to receive all the data sent by the client.
while ((i = stream.Read(bytes, 0, bytes.length)) != 0)
{
// Translate data bytes to a ASCII string.
data = Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("Received: {0}", data);
}
// Shutdown and end connection
client.Close();
}
после первой итерации он просто блокируется и ничего не получает, даже если соединение потеряно, он продолжает блокироваться, однако по прошествии некоторого времени он дает мне следующее исключение:
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
то же исключение для второго stream.write () на стороне клиента:
System.IO.IOException: Unable to write data to the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
Я думаю, что это может быть проблема с брандмауэром, и если да, может кто-нибудь сказать мне, почему это происходит и как это исправить? Заранее спасибо.
Редактировать: stream.DataAvailable имеет значение false после первого stream.read (), поэтому он не является дубликатом По каким причинам NetworkStream.Read зависает / блокируется?
Примечание: код слушателя и код клиента взяты из https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?view=netframework-4.7.2#examples и https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient?view=netframework-4.7.2#examples