Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> connect'имся и отсылаем свои ip и port, getsockname не пашет 
V
    Опции темы
MoZy
  Дата 25.7.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: -2
Всего: 0



Доброго всем лета.
Нужно подцепиться к серверу, и сразу послать пакет, в котором содержится собственный IP и порт.

Код

connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in));
getsockname (sock,(struct sockaddr*)&my_addr,&j);
sprintf(st,"%s; %d %d",inet_ntoa(my_addr.sin_addr),ntohs(my_addr.sin_port),j);
SetWindowText(hwndMain,st);

после этого выводит: 0.0.0.0; 0; 0

не уверен, что connect проходит сразу. Как узнать, что сконектился, если сокет через WSAAsyncSelect? там есть флаг FD_CONNECT, но как его принимать, через какой параметр? 

Спасибо за внимание.
 
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
MoZy
Дата 26.7.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: -2
Всего: 0



Оказывается в getsockname третий параметр предварительно должен равняться sizeof(sockaddr)

Если после connect'a с помощью getsockname получить имя сокета, то my_addr.sin_addr.S_un.S_addr будет содержать IP не нулевой, если конект удачный. Это неплохо помогает при асинхронном соединении, так как даже при неудачном конекте событие FD_CONNECT пролазит.

События FD_... передаются через LOWORD(lParam). Сокет же, который данное событие вызвал, через (SOCKET)wParam.
 smile  
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.