可以响应UDP连接吗?

时间:2011-11-17 11:19:10

标签: vb.net sockets udp

我使用此代码从无IP有效设备接收许多UDP连接:

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

现在我希望在接收数据后将响应数据发送到设备

我使用此代码

receivingUdpClient.Send(receiveBytes, 10)

购买已收回此错误: “非连接套接字上不允许进行操作。”

2 个答案:

答案 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的通话。