我使用此代码从无IP有效设备接收许多UDP连接:
receivingUdpClient = New System.Net.Sockets.UdpClient(Port)
Dim byteBuffer As [Byte]() = receivingUdpClient.Receive(RemoteIpEndPoint)
现在我希望在接收数据后将响应数据发送到设备
我使用此代码
receivingUdpClient.Send(receiveBytes, 10)
购买已收回此错误: “非连接套接字上不允许进行操作。”
答案 0 :(得分:0)
通常,您需要使用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);
答案 1 :(得分:0)
在您的代码中,RemoteIpEndPoint
会捕获您从中收到数据的地址。要将数据发送回该主机,您需要将该地址(端点)传递给您对Send
的通话。