Ошибка C # — NetworkStream — «Операция не разрешена для непотоковых ориентированных сокетов».

#c# #sockets #networkstream

#c# #сокеты #networkstream

Вопрос:

Я пытаюсь подключиться к сокету, а затем прочитать NetworkStream.

Мой код приведен ниже:

 NetworkStream myNetworkStream;
Socket socket;

socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IPv4);

socket.Connect(IPAddress.Parse("8.8.8.8"), 8888);

myNetworkStream = new NetworkStream(socket);

byte[] buffer = new byte[1024];
int offset = 0;
int count = 1024;

myNetworkStream.Read(buffer, offset, count);
  

Когда я пытаюсь отладить вышеуказанное, я получаю следующую ошибку:

Операция не разрешена для непотоковых ориентированных сокетов.

Что я делаю не так?

Спасибо

Ответ №1:

Вам нужно использовать SocketType.Stream вместо SocketType.Raw .

Комментарии:

1. Попробовал это, получил эту ошибку: «Запрошенный протокол не был настроен в системе, или для него не существует реализации»

2. Я полагаю, что вы пытаетесь подключиться к сокету UDP, а не к сокету TCP. Найдите это сообщение об ошибке здесь, и оно указывает SOCK_DGRAM. msdn.microsoft.com/en-us/library/windows/desktop /…

Ответ №2:

используйте это, это сработает «Сокет (семейство адресов.Межсетевой,SocketType.Stream, ProtocolType.Не указано)»