Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > "Широковещательные" сокеты


Автор: daNick 5.1.2008, 08:16
Посоветуйте, плз, ресурсы с описанием использования броадкастовых сокетов...

Автор: GrayCardinal 6.1.2008, 12:12
daNick
Включаешь бродкаст и шлёшь широковещательные UDP-шки. Вся разница в принципе...

Автор: Олег2005 6.1.2008, 12:31
Особенных ресурсов нет - это обычный UDP-клиент, посылающий широковещательные сообщения
Ниже простой примерчик:

Код

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

int main(int argc, char **argv)
{
 int value = 1;
 int fd;
 short int port;
 struct sockaddr_in broadcast;
 if(argc < 3) 
{
  printf("usage: %s port message", argv[0]);
  exit(-1);
 }
 port = atoi(argv[1]);
 memset(&(broadcast), 0, sizeof(broadcast));
 broadcast.sin_family = PF_INET;
 broadcast.sin_port = htons(port);
 broadcast.sin_addr.s_addr = htonl(INADDR_BROADCAST);

 if((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) 
{
  perror("socket");
  exit(-1);
 }

 if(setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value))) 
{
  perror("setsockopt");
  exit(-1);
 }

 if(sendto(fd, argv[2], strlen(argv[2]), 0, &broadcast, sizeof(broadcast))== -1) {
  perror("sendto");
  exit(-1);
 }
printf("done.\n"); 
close(fd);
return 0;
}

Автор: daNick 8.1.2008, 22:34
Ну мне хотя бы один жизненный пример сервер-клиент (с исходниками обеих сторон) посмотреть бы... Как клиент находит сервери подключается к нему? Особенно интересует пример простенького чата, где клиенту и серверу в качестве параметра в командной строке передавался бы номер порта... Затем сервер ждет подключений, а клиент находит его независимо от его IP-адреса.

Автор: test0 13.2.2008, 13:53
Задача не корректна.

Клиент может найти молчащий сервер только методом сканирования адресов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)