2009-04-02 9 views
0

Ok, чтобы вещать, я создал сокет:Broadcasting

notifySock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 

И отправить имя хост моего компьютера для всех других компьютеров, подключенных к той же локальной сети, я использую посыл (Byte [] буфер):

notifySock.Send(hostBuffer); 

hostBuffer содержит имя хоста моего компьютера.

Однако, поскольку я использую тип сокета 'datagram', мне нужно отформатировать данные, которые мне нужно отправить. Если возможно, укажите код, который я должен установить между двумя строками кода, который я ввел для создания сокета и отправки данных.

ответ

1

Для широковещательной передачи из пользовательского приложения обычно используется UDP. Вам нужно разработать подходящий протокол, т. Е. Способ форматирования информации, которую вы хотите отправить в пакет UDP.

+0

хорошо я понял. Я использую datagram socketType, для которого UDP работает нормально. У меня сейчас мало сомнений. Между созданием сокета типа датаграммы и отправкой данных, какой код мне нужно написать для трансляции сообщения. Создание IPEndPoint широковещательной передачи типа прекрасно, но как я могу его использовать? – Avik

0

В вашем примере вы не указали, к кому вы обращаетесь. Вам нужно что-то вроде:

UdpClient notifySock = new UdpClient(endPoint); 
notifySock.Send(buffer, buffer.Length, new IPEndPoint(IPAddress.Broadcast, 1234)); 

Для остальных хостов в вашей локальной сети, чтобы получить, что они должны быть прослушивает порт UDP 1234.

+0

Получил это. Новая проблема заключается в том, что в классе UDPClient существует метод получения. Однако один из его параметров является ссылочной переменной типа IPEndPoint. Но если мне нужно услышать широковещательное сообщение, мне не нужно что ... Какой метод я должен вызывать для приема широковещательного сообщения. – Avik