The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Проблема с сокетами."
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Проблема с сокетами."
Сообщение от mikek emailИскать по авторуВ закладки on 27-Янв-03, 17:05  (MSK)
Пишу небольшой сервер. Все работает. Только два нюанса. После того, как 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 все работает, даже с большим колличество параллельных запросов.

Может кто-то встречался с такой проблемой?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Проблема с сокетами."
Сообщение от vnp emailИскать по авторуВ закладки on 27-Янв-03, 21:09  (MSK)
>Пишу небольшой сервер. Все работает. Только два нюанса. После того, как accept
>первый раз возвращает ?-1?,

С каким errno?

>последующие вызовы этой функции начинают возвращать ?0?
>вместо IP адреса.
>
>Вот кусочек кода:
>
>        memset(&c_sock_info,0,addr_length);
>        c_sock=accept(m_sock, (struct sockaddr *) &c_sock_info, (socklen_t*) &addr_length);

Как создан m_sock?

>
>        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 все работает, даже с большим
>колличество параллельных запросов.
>
>Может кто-то встречался с такой проблемой?


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру