Отправка и получение пакетов UDP
Следующий код отправляет пакет через порт 15000:
int port = 15000;
UdpClient udp = new UdpClient();
//udp.EnableBroadcast = true; //This was suggested in a now deleted answer
IPEndPoint groupEP = new IPEndPoint(IPAddress.Broadcast, port);
string str4 = "I want to receive this!";
byte[] sendBytes4 = Encoding.ASCII.GetBytes(str4);
udp.Send(sendBytes4, sendBytes4.Length, groupEP);
udp.Close();
Тем не менее, это бесполезно, если я не могу получить его на другом компьютере. Все, что мне нужно, это отправить команду другому компьютеру в локальной сети, чтобы он получил ее и что-то сделал.
Без использования библиотеки Pcap, есть ли способ, которым я могу это сделать? Компьютер, с которым взаимодействует моя программа, - 32-разрядная Windows XP, а отправляющий компьютер - 64-разрядная Windows 7, если это имеет значение. Я смотрел в различныеnet send
команды, но я не могу их понять.
У меня также есть доступ к локальному IP-адресу компьютера (XP), так как я могу физически набрать на нем «ipconfig».
РЕДАКТИРОВАТЬ: Вот функция получения, которую я использую, скопированная откуда-то:
public void ReceiveBroadcast(int port)
{
Debug.WriteLine("Trying to receive...");
UdpClient client = null;
try
{
client = new UdpClient(port);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
IPEndPoint server = new IPEndPoint(IPAddress.Broadcast, port);
byte[] packet = client.Receive(ref server);
Debug.WriteLine(Encoding.ASCII.GetString(packet));
}
я звонюReceiveBroadcast(15000)
но нет выхода вообще.