Сокет TCP на Linux (ubuntu) mono выдает ошибку - PullRequest
0 голосов
/ 09 июля 2020

В настоящее время у меня есть тестовый проект, составленный с помощью C#. В основном он делает сокет TCP Listener. но при попытке принять соединение возникает ошибка.

socket_tcpListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket_tcpListener.Bind(endPoint);
socket_tcpListener.Listen(28);
socket_tcpListener.Accept();

приведенный выше код - это именно то, что я сделал. это было совершенно нормально, когда я запускал этот скомпилированный .exe в окне. это также было обнаружено, когда я запускал этот проект без компиляции с помощью команды do tnet run. но если я компилирую проект в файл .dll с помощью команды do tnet msbuild и запускаю с командой do tnet run, возникают ошибки.

System. Net .Sockets.SocketException (0x80004005): Операция на неблокирующем сокете будет блокировать

Я зарегистрировал каждую строку, чтобы узнать точную ошибку определения положения. поэтому я обнаружил, что метод Accept в последней строке вызывает ошибку.

отключить блокировку (socket.Blocking = false) не помогло. и я действительно не знаю почему, только скомпилированная dll делает ошибку. нужна помощь.

...