TcpListener и TcpClientC#

Место общения программистов C#
Ответить
Anonymous
 TcpListener и TcpClient

Сообщение Anonymous »

Я пытаюсь подключить TcpClient (на стороне клиента) и TcpListener (на стороне сервера) для отправки (более одного) потока данных. У меня есть проблема, которую я не смог решить, прочитав документацию и статьи...
Это метод, который я использую для запуска TcpListener (на стороне сервера):

Код: Выделить всё

public void StartListener()
{
System.Net.Sockets.TcpListener listener = new(
IPAddress.Parse("127.0.0.1"),
15001);

listener.Start();
while (listen)
{
if (listener.Pending())
{
try
{
Thread thread = new Thread(() =>
{
using (TcpClient tcpClient = listener.AcceptTcpClient())
using (NetworkStream networkStream = tcpClient.GetStream())
using (StreamReader streamReader = new StreamReader(networkStream))
{
string message = streamReader.ReadToEnd();

Console.WriteLine("Message: " + message.Length + " bytes");
}
});
thread.Start();
}
catch (SocketException se)
{
Console.WriteLine($"{se.Message} ({se.ErrorCode})");
throw;
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
}
else
{
Thread.Sleep(100);
}
}
}
Это код, который я использую для отправки потоков (на стороне клиента):

Код: Выделить всё

public void StartTcpClient()
{
try
{
System.Net.Sockets.TcpClient tcpClient = new();

tcpClient.Connect(
"127.0.0.1",
15001);

NetworkStream networkStream = tcpClient.GetStream();

byte[] message = "This is and example."u8.ToArray();
networkStream.Write(message, 0, message.Length);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
Моя проблема в строке TcpClient tcpClient = Listener.AcceptTcpClient(); когда я запускаю клиент, соединение устанавливается, но Listener.AcceptTcpClient() всегда возвращает значение null. Никаких ошибок или исключений не возникает; код начинает следующую итерацию.
Есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -tcpclient
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»