Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 10:19   #1
vadakoff
 
Регистрация: 14.10.2010
Сообщений: 7
По умолчанию INADDR_ANY не биндиться

не могу разобраться с программой, привязываю конкретный сетевой интерфейс - все нормально, ставлю любой адрес(INADDR_ANY) - bind() возвращает -1.
Пробовал копилить с MinGW и Pelles c - без разницы.
Подскажите может код кривой?
Код:
Код:
#include <winsock.h>
#pragma comment (lib, "ws2_32.lib")
int main(void)
{
     WSADATA wsd;
     int s;
     int b;
     int news; 
     struct sockaddr_in sin;
	 
     	 
     WSAStartup(0x101,&wsd);
     sin.sin_family=AF_INET;
     sin.sin_addr.s_addr=INADDR_ANY;//inet_addr("192.168.0.2");
     sin.sin_port=htons(12345);
     memset(&sin.sin_zero,0,sizeof(sin.sin_zero));
     s = socket(AF_INET, SOCK_STREAM, 0);
     b = bind(s,(struct sockaddr *)&sin, 0x10);
     printf("%d",b);
     listen(s,3);
     news=accept(s,(struct sockaddr *)&sin, 0);
     return 0;
}

Последний раз редактировалось vadakoff; 22.11.2010 в 10:24.
vadakoff вне форума Ответить с цитированием
Старый 22.11.2010, 21:02   #2
Sam Gold
Форумчанин
 
Аватар для Sam Gold
 
Регистрация: 26.03.2010
Сообщений: 538
По умолчанию

Код:
int s;
это судя по всему у вас сокет? Так под винду обычно пишут
Код:
SOCKET s;
И тут, насколько я помню надо
Код:
sin.sin_addr.s_addr=htonl(INADDR_ANY);
Единственный способ стать умнее - играть с более умным противником.
Sam Gold вне форума Ответить с цитированием
Старый 23.11.2010, 05:55   #3
vadakoff
 
Регистрация: 14.10.2010
Сообщений: 7
По умолчанию

а все заработало, поставил порт 4444, привязка есть, может винда не пускает на 12345

Цитата:
sin.sin_addr.s_addr=htonl(INADDR_AN Y);
где то, когда то, слышал что вообще можно так: sin.sin_addr.s_addr=0 т.к. INADDR_ANY и есть 0

Последний раз редактировалось vadakoff; 23.11.2010 в 06:01.
vadakoff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц