struct sockaddr_in serv_addr;
int full_server_addr(const char *ip_addr)
{
struct hostent *hp;
hp=gethostbyname(ip_addr);
if(hp==0)return -1;
bzero(&serv_addr,sizeof(serv_addr));
bcopy(hp->h_addr,&serv_addr.sin_addr,hp->h_length);
serv_addr.sin_family=hp->h_addrtype;
serv_addr.sin_port=htons((u_short)1500);
return 0;
}
void wait_connect_as_client(void)
{
int client_socket;
full_server_addr("192.168.0.20");//заполняем serv_addr
client_socket=socket(AF_INET,SOCK_STREAM,0);
while(1)
{
if(connect(client_socket,
(struct sockaddr*)&serv_addr,sizeof(serv_addr))!=-1)
{
main_loop(client_socket);//работаем пока сервер не отключится
close(client_socket);
client_socket=socket(AF_INET,SOCK_STREAM,0);
}
}
}
В функции wait_connect_as_client() пробую подключится к серверу и если успешно то работаю с ним пока не он не отключится, потом опять пытаюсь поключиться.
Проблема заключаеся в следуешем если компьтер (192.168.0.20) в сети есть то все Ок. Даже если сервер не отвечает то
connect() сразу возврашает -1, или компьтер (192.168.0.20) вообще не включен то тоже connect() сразу возврашает -1.
Но если компьтер выключить когда я к нему пытаюсь подключиться то цикл останавливается на ф-ции connect() и стоит там минут 10-15 потом продолжает работать (connect() сразу возврашает -1). Подскажите пожалуйста в чем дело, я так понимаю у сокета есть тайм-аут который для моей задачи слишком большой для меня приемлимо время ожидания не больше 5-7 секунд.
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от cvv
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от CL
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум В чем ошибка чтения? (2020)
- Форум Подсчет числа возможных открытых TCP-портов (2011)
- Форум C++, OpenSSL. Как соединиться с сервером через прокси? (2015)
- Форум не биндится сокет к 80 порту (2017)
- Форум Таймаут для connect() (2009)
- Форум Проблема с connect (2006)
- Форум Соединится с сервером по сокету? (2020)
- Форум Как получить свой IP адрес? (2005)
- Форум connect return -1 errno = 105 (ENOBUFS) (2005)
- Форум Помогите разобратся. Прога сокеты+http (2009)