информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медАтака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Массовый взлом SharePoint 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Всем спасибо, вопрос снят 31.01.03 17:55  Число просмотров: 1044
Автор: 1blin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
первый параметр select был указан неверно :(
В винде он игнорируется, потому там и работало :)
<programming>
[unix] select() в linux 31.01.03 16:56  
Автор: 1blin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
помогите, други.
select() - ом ожидаю входящего коннетка на серверный сокет.
В man accept сказано:
In order to be notified of incoming connections on a socket, you can use select(2) or poll(2). A readable event will be delivered when a new connection is attempted and you may then call accept to get a socket for that connection.
Но в реале, когда коннектишься к этому серверу select почему-то не возвращает управление :(

-- вот код --
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <netdb.h>
#include <arpa/inet.h>

#define PORTNUM 50001


int main()
{
int s_serv;
struct sockaddr_in addr_in;
fd_set rfds;

if (-1==(s_serv = socket(AF_INET,SOCK_STREAM,0))) return -1;
printf("socket\tOK\n");

addr_in.sin_family = AF_INET;
addr_in.sin_port = htons(PORTNUM);
addr_in.sin_addr.s_addr=htonl(INADDR_ANY);

if (-1==bind (s_serv,(struct sockaddr*)&addr_in,sizeof(addr_in))) return -2;
printf("bind port %d\tOK\n",PORTNUM);

if (-1==listen(s_serv,1)) return -3;
printf("listen\tOK\n");

FD_ZERO(&rfds);
FD_SET(s_serv, &rfds);
printf (" select returns %d\n",
select(1, &rfds, NULL, NULL, NULL));
// дальше должен идти accept, но сюда управление не приходит :(
}
----
ЗЫ: компилилось на red hat 7.2
ЗЫ2: А под виндой (с соотв изменениями) работает!
Всем спасибо, вопрос снят 31.01.03 17:55  
Автор: 1blin Статус: Незарегистрированный пользователь
<"чистая" ссылка>
первый параметр select был указан неверно :(
В винде он игнорируется, потому там и работало :)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach