Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с сокетами.

4
27 января 2003 года
mike
3.7K / / 01.10.2002
Пишу небольшой сервер. Все работает. Только два нюанса. После того, как accept первый раз возвращает «-1», последующие вызовы этой функции начинают возвращать «0» вместо IP адреса.

Вот кусочек кода:

memset(&c_sock_info,0,addr_length);
c_sock=accept(m_sock,(struct sockaddr *)&c_sock_info,(socklen_t*)&addr_length);

if (c_sock<=0) continue;
if (c_sock>0) {
sendbuff_size=0;
sendbuff[0]=0;
memset(buf,0,MAXRECV+1);
int status=recv(c_sock,buf,MAXRECV,O_NONBLOCK);
char *ip=strdup(inet_ntoa(c_sock_info.sin_addr));


Вторая проблема в том, что сервер попросту вываливается, если в MSIE просто подержать F5. При тестировании через ab все работает, даже с большим количеством параллельных запросов.

Может кто-то встречался с такой проблемой?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог