У меня есть сервер сокетов (написан на C++), который получает запросы от клиентов и отправляет ответы обратно. Итак, мое тестовое клиентское приложение (C#) очень простое:UdpClient.Receive (...) не получает данных
Я запускаю оба приложения на одном компьютере. Сервер получает запрос на порт 10240 с клиентского порта 10241 и отправляет ответ обратно на порт клиента 10241, но клиент так и не получает его. Итак, я уверен, что сервер отправляет пакет обратно, потому что все отлично работает с клиентом C++. Это означает, что я делаю что-то не так на моем C# -кодире. Есть идеи?
Спасибо!
приписка> Просто проверить его с # клиент Berkley гнездо C:
try {
// Create socket
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
// Bind
IPEndPoint myEP = new IPEndPoint(IPAddress.Any, 0);
s.Bind(myEP);
// prepare the packet to send
iWritableBuff wbuff = new iWritableBuff();
[ ... ]
// Send it
IPEndPoint sEP = new IPEndPoint(IPAddress.Parse(server_ip_address), 10240);
int res = s.SendTo(wbuff.GetBuff(), (int)wbuff.Written(), 0, sEP);
// Receive the response
byte[] receiveBytes = new Byte[1024];
EndPoint recEP = new IPEndPoint(IPAddress.Any, 0);
res = s.ReceiveFrom(receiveBytes, ref recEP);
Console.WriteLine("We've got some data from the server!!! " + res + " bytes.");
} catch (Exception e) {
Console.WriteLine("ERROR: " + e.ToString());
}
И это отлично работает! Что не так с UdpSocket?
Я думаю, что в вашем случае проблема заключалась в том, что вы использовали 'Connect' или' ConnectAsync', установив удаленную конечную точку на широковещательный адрес. Не подключайте, а поставляйте удаленную конечную точку с помощью вызова «Send» или «SendAsync», и вы сможете получать с помощью того же UdpClient. – Thorarin