Может ли отклик UDP-соединение? - PullRequest
0 голосов
/ 17 ноября 2011

Я получаю много UDP-соединений от ни одного действительного IP-устройства с этим кодом:

receivingUdpClient = New System.Net.Sockets.UdpClient(Port)
Dim byteBuffer As [Byte]() = receivingUdpClient.Receive(RemoteIpEndPoint)

Теперь я хочу получить ответные данные на устройство после получения данных

Я использую этот код

receivingUdpClient.Send(receiveBytes, 10)

Купить Получено Эта ошибка: «Операция не разрешена для неподключенных сокетов».

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

В вашем коде RemoteIpEndPoint захватывает адрес, с которого вы получили данные. Чтобы отправить данные обратно на этот хост, вам нужно передать этот адрес (конечную точку) на ваш звонок Send.

0 голосов
/ 17 ноября 2011

В общем, вам нужно использовать методы SendTo и ReceiveFrom вместо отправки и получения с UDP-сокетами.Таким образом, вы можете получить IP: порт (конечную точку) отправителя - так что вы можете отправить ответ обратно на тот же адрес.Мой VB слабый, поэтому я приведу простой пример на C #.

byte [] buffer = new byte[1500];
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint senderRemote = (EndPoint)sender;

EndPoint senderRemote;
int bytesReceived = socket.recvFrom(buffer, senderRemote);
// echo the message back to the sender
if (bytesReceived > 0)
    socket.sendTo(buffer, bytesReceived, senderRemote);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...