Accueil > Forum > > > > fonction select() sous windows et unix
fonction select() sous windows et unix
mardi 9 septembre 2003 à 12:43:10 |
fonction select() sous windows et unix

peyou
|
je dois porter un logiciel de windows et unix, je dois utiliser la fonction select() (déclarée dans winsock2.h sous windows et sys/select.h sous unix) mais je ne suis pas sur de pouvoir la remplacer telle quelle car les bits fd_set me semble pas compatibles .... mais ma maigre connaissance du domaine ne m'aide pas, alors j'aimerais si possible une petite explication claire sur le sujet. Merci
|
|
mardi 9 septembre 2003 à 13:04:29 |
Re : fonction select() sous windows et unix

aardman
|
Salut, La macro FD_SET n'est pas definie dans le select.h d'unix ?
------------------------------- Réponse au message : -------------------------------
> je dois porter un logiciel de windows et unix, je dois utiliser la fonction select() (déclarée dans winsock2.h sous windows et sys/select.h sous unix) mais je ne suis pas sur de pouvoir la remplacer telle quelle car les bits fd_set me semble pas compatibles .... mais ma maigre connaissance du domaine ne m'aide pas, alors j'aimerais si possible une petite explication claire sur le sujet. > > Merci
|
|
mardi 9 septembre 2003 à 13:45:01 |
Re : fonction select() sous windows et unix

Nebula
|
Les macros sont parfaitement utilisables sous Windows et Unix, et pour peu qu'on respecte les normes, on peut avoir du code fonctionnel sur les deux systèmes... Je code un démon de dialogue en direct, et avec des #ifdef pour isoler les parties spécifiques Unix (fork, setsid, etc) et Windows (WSAStartup, etc) tout fonctionne ! Un extrait (gestion des pings du démon) : int i; fd_set sockets; struct timeval waiting = {30,0}; FD_ZERO(&sockets); FD_SET(client->socket, &sockets); i = select(FD_SETSIZE, &sockets, NULL, NULL, &waiting); /* i<0 signifie que le socket est fermé i=0 signifie que le temps est écoule i>0 signifie que des données sont prêtes à être lues */
|
Ici, le démon est multithreadé (un thread par client) et donc n'écoute qu'un seul socket, mais on peut très bien écouter plusieurs sockets à la fois (pas plus de 64 par select, pour Windows)... En espérant que çà t'aidera... A+
|
|
mardi 9 septembre 2003 à 15:57:40 |
Re : fonction select() sous windows et unix

Manson
|
Salut, si si tu peux depasser la limite des 64 en mettant un define juste avant d'inclure winsock2 : #define FD_SETSIZE 500 #include <WinSock2.h> Voila maintenant ta nouvelle limite est 500. Et ca marche, j'ai actuelement sur mon serveur 350 personnes de connectees, et en 2 threads, un pour le select, l'autre pour l'interface. Rno ------------------------------- Réponse au message : ------------------------------- > Les macros sont parfaitement utilisables sous Windows et Unix, et pour peu qu'on respecte les normes, on peut avoir du code fonctionnel sur les deux systèmes... > > Je code un démon de dialogue en direct, et avec des #ifdef pour isoler les parties spécifiques Unix (fork, setsid, etc) et Windows (WSAStartup, etc) tout fonctionne ! > > Un extrait (gestion des pings du démon) : > > int i; > fd_set sockets; > struct timeval waiting = {30,0}; > FD_ZERO(&sockets); > FD_SET(client->socket, &sockets); > i = select(FD_SETSIZE, &sockets, NULL, NULL, &waiting); > /* > i<0 signifie que le socket est fermé > i=0 signifie que le temps est écoule > i>0 signifie que des données sont prêtes à être lues > */ > |
> > Ici, le démon est multithreadé (un thread par client) et donc n'écoute qu'un seul socket, mais on peut très bien écouter plusieurs sockets à la fois (pas plus de 64 par select, pour Windows)... > > En espérant que çà t'aidera... > > A+
|
|
mardi 9 septembre 2003 à 16:28:10 |
Re : fonction select() sous windows et unix

Nebula
|
Merci pour cette précision intéressante :)
Je sais plus où j'avais vu cette histoire de 64 sockets, mais c'était peut-être pour Windows 9x... Tu es sous NT (ou un de ses descendants) ?
|
|
mardi 9 septembre 2003 à 18:23:48 |
Re : fonction select() sous windows et unix

aardman
|
Salut, La vrai limite de 64sockets c'est WSAWaitForMultipleEvent qui la fixe. Apres avec select() (et sous windows car je connais pas le reste), on peut depasser la limite de 64 avec la technique de Manson.
------------------------------- Réponse au message : -------------------------------
> Merci pour cette précision intéressante :) > > Je sais plus où j'avais vu cette histoire de 64 sockets, mais c'était peut-être pour Windows 9x... Tu es sous NT (ou un de ses descendants) ?
|
|
mercredi 10 septembre 2003 à 12:39:42 |
Re : fonction select() sous windows et unix

Manson
|
Salut,
mon serveur tourne sous 2000, j'ai fait le test chez moi et il tourne aussi sous XP.
Rno
------------------------------- Réponse au message : -------------------------------
> Salut, > La vrai limite de 64sockets c'est WSAWaitForMultipleEvent qui la fixe. Apres avec select() (et sous windows car je connais pas le reste), on peut depasser la limite de 64 avec la technique de Manson. > > ------------------------------- > Réponse au message : > ------------------------------- > > > Merci pour cette précision intéressante :) > > > > Je sais plus où j'avais vu cette histoire de 64 sockets, mais c'était peut-être pour Windows 9x... Tu es sous NT (ou un de ses descendants) ? >
|
|
Cette discussion est classée dans : fonction, windows, select, unix
Répondre à ce message
Sujets en rapport avec ce message
strftime en C sous windows [ par Rolapin ]
Bonjour, Je souhaiterai utiliser la fonction strftime de C pour formater une date mais autant la fonction effectue ce que je veux sous unix, autant ç
Ressources réseau [ par mohdaef ]
Bonjour J'essaye de coder une application portable (Windows/Unix) Je programme en C++ et je dois réaliser une fonction qui permet de lister toute les
Probléme avec la fonction SetPixel de l'api windows [ par Mareck666 ]
Salut Salut tous le monde si je vien poster sur ce forum c'est parce que je n'arrive pas a trouver des explication a un mystérieux bug de la fonction
GetLayeredWindowAttributes et Windows 2000 [ par Xaviou ]
Bonjour à tous.J'ai un petit soft qui tourne actuellement sur différentes machines, dont certaines encore équipées de Windows 2000.A un moment donné,
usage de la fonction CreateSolidBrush( ) [ par floufy69100 ]
Bonjours, j'ai un petit problème que je n'arrive pas à résoudre, je réussi à créer et à afficher une fenêtre windows, mais mon compilateur me dit qu'i
Lecture de ligne dans un fichier texte sous windows et unix [ par moumouteb ]
Bonjour, Je développe un code qui doit tourner sous Windows et UNIX. J'utilise la fonction getline() pour lire un fichier texte. Et bien sûr suivant
la fonction select() [ par dletozeun ]
bonjour,je commence la programmation reseau en utilisant les sockets et je me heurte a qques problemes:je me suis rendu compte que la fonction recv(..
Fonction select() [ par Daykel ]
Bonjour!Je suis en train de développer un serveur et un client en C avec Visual Studio, mais après avoir vu un source traitant de cette fonction, je v
strcmp() sous Windows ? [ par tintin72 ]
Bonjour,J'aimerai connaître l'équivalent de la fonction C strcmp() sous Windows.C'est à dire une fonction qui prend en charge le type TCHAR et s'adapt
un serveur unix configure des client windows avec les rpc [ par oussssa ]
bonjour :mon probleme c'est de faire un serveur unix qui va executer des prg ecrite en c# qui controle et configures les @ ip, journal d'evenement ,
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|