2011-11-17 64 views
0

我收到许多UDP连接从无IP有效设备使用此代码:可以响应UDP连接吗?

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

现在我想响应数据设备接收数据

后,我用这个代码

receivingUdpClient.Send(receiveBytes, 10) 

购买Recived此错误: “该操作不允许在未连接的套接字上。”

回答

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); 
+0

他正在使用UdpClient,因此没有SendTo或ReceiveFrom。 – tcarvin

+0

在这种情况下,他应该在进行第一次发送之前调用“连接”方法。 – selbie

+0

是的,或者他需要在发送呼叫中指定远程启动点。 – tcarvin

0

在您的代码中,RemoteIpEndPoint捕获您收到数据的地址。要将数据发送回该主机,您需要将该地址(终端)传递给Send的呼叫。