Прослушивание UDP, отправка и получение (простой, клиент и сервер в одном приложении)

Хорошо, я хочу отправить пакет UDP на IP, а затем получить его. Поскольку я не могу заставить его работать, я должен обратиться за помощью.

Я хочу, чтобы он работал в 1 приложении, то есть клиент и сервер находятся в одном приложении. В настоящее время я работаю с отправкой и получением аудио в одном приложении (используя примеры кодов и прочее).

И то, что я не могу понять, это только UDP и, возможно, сокеты.

Это кажется простым, но я не могу заставить его работать.

Итак, если я могу получить очень простой образец, например:

"UDP отправить "привет" на IPofchoice"

"UDP получает "данные" от IPofchoice"

Messagebox.show («декодировано (данные));

Надеюсь, вы поняли, что я имею в виду.

РЕДАКТИРОВАТЬ:

Вот мой "пример", который вообще не работает.

void VoiceChat_KeyPress (отправитель объекта, KeyPressEventArgs e)

void VoiceChat_KeyPress(object sender, KeyPressEventArgs e)
    {
        string text = "Hello";
        byte[] send_buffer = Encoding.ASCII.GetBytes(text);
        otherPartyIP = new IPEndPoint(IPAddress.Parse(txtCallToIP.Text), 1450);
        udpClientKey.Send(send_buffer, send_buffer.Length, "127.0.0.1", 1450);

        byte[] byteData = udpClientKey.Receive(ref otherPartyIP);
        MessageBox.Show(otherPartyIP.Address.ToString());

        MessageBox.Show(System.Text.Encoding.ASCII.GetString(byteData));
    }

Где txtCallToIP.tex = IP-адрес, который я пишу, который в настоящее время равен 127.0.0.1.


person Zerowalker    schedule 23.07.2013    source источник
comment
Покажите, что вы пробовали, и объясните, почему это не работает. Мы здесь не для того, чтобы писать для вас код.   -  person Barmar    schedule 23.07.2013
comment
Извините, но вот, спасибо :)   -  person Zerowalker    schedule 24.07.2013


Ответы (1)


Это я решил.

Иметь клиент и сервер в UDP очень просто, хотя и немного опасно, так как вы не знаете наверняка, работает он или нет, пока не протестируете его (UDP просто отправляет и не заботится ни о чем другом). ).

Так что в принципе делать.

Client.Send(buffer,0,buffer.size,IPAdress,Port); byte[] rec = Client.Receive(ref IPAdress);

Чтобы получить, вы должны привязать его к IP-адресу, поэтому вы можете просто привязать его для прослушивания любого IP-адреса. Порт, однако, должен быть установлен (я думаю), и вы хотите это сделать, так как прослушивание всего, что есть, не хорошая идея.

Таким образом, ref IPAdress будет IP-адресом прослушивания и портом.

Так что это очень легко настроить. И вы можете использовать один и тот же UDPClient как для приема, так и для отправки, если хотите, хотя, вероятно, лучше иметь 2 отдельных файла .

person Zerowalker    schedule 09.08.2013
comment
Порт может быть установлен на ноль перед привязкой, но это просто означает, что система выделит вам порт, и вам нужно будет выяснить, какой он был, прежде чем отправлять что-либо на него. Нет никакого смысла в том, чтобы приложение отправляло дейтаграммы UDP самому себе. Есть лучшие внутренние механизмы. - person user207421; 09.08.2013