работа setsockopt
Мне надо, чтобы мой сервак принимал любые входящие коннекты из локалки, а для этого, на сколько я понял, нужно установить опцию SO_BROADCAST для сокета. Помогите, плиз, как это сделать.
Цитата:
Originally posted by zl0gzd3r
Мне надо, чтобы мой сервак принимал любые входящие коннекты из локалки, а для этого, на сколько я понял, нужно установить опцию SO_BROADCAST для сокета. Помогите, плиз, как это сделать.
Мне надо, чтобы мой сервак принимал любые входящие коннекты из локалки, а для этого, на сколько я понял, нужно установить опцию SO_BROADCAST для сокета. Помогите, плиз, как это сделать.
Код:
SetSockOpt(SO_BROADCAST,TRUE,sizeof(BOOL),IPPROTO_TCP);
или
Код:
setsockopt(SOCET_HEAD,IPPROTO_TCP,SO_BROADCAST,true,sizeof(bool));
Код:
setsockopt(server,IPPROTO_TCP,SO_BROADCAST,true,sizeof(bool));
Так не работает.
Код:
setsockopt(server,SOL_SOCKET,SO_BROADCAST,true,sizeof(bool));
И так не работает
Код:
setsockopt(server,SOL_SOCKET,SO_BROADCAST,(const char*)true,sizeof(bool));
И даже так не работает. Вопрос: а как работает? Плз, очень надо.
Цитата:
Originally posted by zl0gzd3r
Так не работает.
И так не работает
И даже так не работает. Вопрос: а как работает? Плз, очень надо.
Код:
setsockopt(server,IPPROTO_TCP,SO_BROADCAST,true,sizeof(bool));
Так не работает.
Код:
setsockopt(server,SOL_SOCKET,SO_BROADCAST,true,sizeof(bool));
И так не работает
Код:
setsockopt(server,SOL_SOCKET,SO_BROADCAST,(const char*)true,sizeof(bool));
И даже так не работает. Вопрос: а как работает? Плз, очень надо.
Прошу прощения, работает вот так:
Код:
SOCKET hServer = socket(PF_INET,SOCK_STREAM,IPPROTO_IP);
setsockopt(hServer,IPPROTO_TCP,SO_BROADCAST,"TRUE",sizeof(bool));
....//и т.д.
setsockopt(hServer,IPPROTO_TCP,SO_BROADCAST,"TRUE",sizeof(bool));
....//и т.д.
Специально проверил.
Код:
WSADATA wsaData = {0};
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) return 0;
SOCKET server = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if (server == INVALID_SOCKET) return 0;
if (setsockopt(server,IPPROTO_TCP,SO_BROADCAST,"true",sizeof(bool)) == SOCKET_ERROR) return 0;
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) return 0;
SOCKET server = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if (server == INVALID_SOCKET) return 0;
if (setsockopt(server,IPPROTO_TCP,SO_BROADCAST,"true",sizeof(bool)) == SOCKET_ERROR) return 0;
Ничего не понимаю, даже так не работает. Просто выходит из потока и все. Блин, в чем же дело. :x Целый проект из-за этой единственной строчки виснет.
Цитата:
Originally posted by zl0gzd3r
Ничего не понимаю, даже так не работает. Просто выходит из потока и все. Блин, в чем же дело. :x Целый проект из-за этой единственной строчки виснет.
Код:
WSADATA wsaData = {0};
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) return 0;
SOCKET server = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if (server == INVALID_SOCKET) return 0;
if (setsockopt(server,IPPROTO_TCP,SO_BROADCAST,"true",sizeof(bool)) == SOCKET_ERROR) return 0;
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) return 0;
SOCKET server = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if (server == INVALID_SOCKET) return 0;
if (setsockopt(server,IPPROTO_TCP,SO_BROADCAST,"true",sizeof(bool)) == SOCKET_ERROR) return 0;
Ничего не понимаю, даже так не работает. Просто выходит из потока и все. Блин, в чем же дело. :x Целый проект из-за этой единственной строчки виснет.
Код:
WSADATA wsaData = {0};
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) ShowMessage("Скорее всего ошибка yt nfr ghj bybw");
SOCKET server = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if (server == INVALID_SOCKET) ShowMessage("Скорее всего ошибка");
if (setsockopt(server,SOL_SOCKET,SO_BROADCAST,"TRUE",sizeof(bool)) == SOCKET_ERROR) ShowMessage("Скорее всего ошибка dddd");
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) ShowMessage("Скорее всего ошибка yt nfr ghj bybw");
SOCKET server = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);
if (server == INVALID_SOCKET) ShowMessage("Скорее всего ошибка");
if (setsockopt(server,SOL_SOCKET,SO_BROADCAST,"TRUE",sizeof(bool)) == SOCKET_ERROR) ShowMessage("Скорее всего ошибка dddd");