Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1524 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Socket

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Socket

n°662391
Suisse
Posté le 04-03-2004 à 03:46:06  profilanswer
 

Salut ! Avant que je vous plonge dans mes questions quelle son les 2 meilleurs ! Car j'ai déja posser une question symilaire sur un autre forum mais il n'arretais pas de me dire que contre dire le choix des autres.
 
Les choix est :
WSAAsyncSelect
MultiThread
Select
 
Merci d'avance :)
 
Suisse


Message édité par Suisse le 04-03-2004 à 18:04:26
mood
Publicité
Posté le 04-03-2004 à 03:46:06  profilanswer
 

n°663362
xterminhat​e
Si vis pacem, para bellum.
Posté le 04-03-2004 à 18:38:53  profilanswer
 

Entre deux fautes d'orthographe ou de grammaire, on a du mal a comprendre ta question...
 

n°663367
blackgodde​ss
vive le troll !
Posté le 04-03-2004 à 18:44:54  profilanswer
 

bin ca depend de ce que tu veux faire, du style que tu comptes adopter, du nombre max de clients, des limitations de l'os ...


---------------
-( BlackGoddess )-
n°663375
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 18:56:50  profilanswer
 

Suisse a écrit :

Salut ! Avant que je vous plonge dans mes questions quelle son les 2 meilleurs ! Car j'ai déja posser une question symilaire sur un autre forum mais il n'arretais pas de me dire que contre dire le choix des autres.


J'ai rien compris

n°663392
uriel
blood pt.2
Posté le 04-03-2004 à 19:12:42  profilanswer
 

tu aurais du faire un sondage [:dawa]
je vote Multithread :O


---------------
IVG en france
n°663405
Suisse
Posté le 04-03-2004 à 19:27:48  profilanswer
 

Citation :

tu aurais du faire un sondage


Je n'y avais pas pensé  
 

Citation :

bin ca depend de ce que tu veux faire, du style que tu comptes adopter, du nombre max de clients, des limitations de l'os ...


Quelque chose comme un serveur ircd (pas exactement). Donc ~ 100 utilisateur simultané (se n'est pas la maximum :))
L'os sous windows.
 
Est-ce que les MultiThread réponde a mes besion ?
 
Si oui , vous n'auriez pas un site (exemple comme documention) MultiThread, socket. Je cherche de mon coté mais ses temps si mon internet ne va pas très bien.

n°663412
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-03-2004 à 19:35:16  profilanswer
 

Suisse a écrit :


Est-ce que les MultiThread réponde a mes besion ?
 
Si oui , vous n'auriez pas un site (exemple comme documention) MultiThread, socket. Je cherche de mon coté mais ses temps si mon internet ne va pas très bien.


Fais un effort, franchement tu es illisible

n°663508
blackgodde​ss
vive le troll !
Posté le 04-03-2004 à 20:33:44  profilanswer
 

bin ca depend ... par exemple un serveur mysql utilise un thread par client, ca se comprend car chaque client va demander au thread des choses 'lourdes' j'entends par la des choses couteuses en CPU.
 
j'ai regardé la source d'un unrealircd, ils font pas un thread par client, ca serait désastreux car on pourrait atteindre la limite de l'os, et inutile car la plupart des threads passerait leur temps a attendre ...


---------------
-( BlackGoddess )-
n°663566
Suisse
Posté le 04-03-2004 à 21:10:06  profilanswer
 

Citation :

Fais un effort, franchement tu es illisible


Désoler :/ Pour expliquer sur les forums ses pas mon trucs.
 

Citation :

et inutile car la plupart des threads passerait leur temps a attendre ...

A oui tu a raison.
 
Donc si je crois ce que j'ai déjà lus.
 
Select : est très utilise pour la portabilité.
WSAAsyncSelect : Pour windows.
 
Alors voilà une dernière question après vous n'aurez plus a décrypter ce que j'écrie :).
 
J'essai de faire un serveur en mode W32. Le problème est que je n'arrive pas a recevoir le recv() quand quelqu'un le déclanche (j'utilise WSAAsyncSelect) car je ne sais pas quelle est le bon accept();.
 
INFO : sauf si je me trompe le 1er paramètre de recv est le SOCKET accept().
 
Merci d'avance
 
En espérant plus trop vous déranger.
 
Suisse

n°663815
Konar
Posté le 05-03-2004 à 01:11:44  profilanswer
 

a mon humble avis la fonction select (ou l'équivalent WSA) est totalement indispensable à tout programme client/serveur utilisant les socket.
 
faire un appel a recv, send, ou autres sans savoir si qqchose se trouve dans la socket (et donc si l'appel sera bloquant ou pas) c'est totalement aberrant, surtout dans  
 
sinon chuis entièrement d'accord avec BlackGoddess :
 
il y a 1 seule chose a prendre en compte : les temps de traitements (ie l'analyse des requêtes, la construction des réponses, etc) sont-ils négligeables ?
 
si oui, tu peux te permettre de tout faire dans le meme thread : recevoir les données, les analyser, construire la réponse, et les envoyer.
si non, il faut faire un thread en plus, qui va se charger des traitements et laisser tranquille le thread socket qui se charge de recevoir et/ou envoyer.

mood
Publicité
Posté le 05-03-2004 à 01:11:44  profilanswer
 

n°663848
Suisse
Posté le 05-03-2004 à 02:40:40  profilanswer
 

Merci de cette description :)
Mais comme je ne suis pas encore très bon dans le c++ j'aimerais mieux laisser de coté les thread :/.
 
Sinon pas question est plus haute :)
RAPELLE : Le serveur n'est pas un client/serveur :)  
 
Merci d'avance
 
Suisse

n°668128
Suisse
Posté le 09-03-2004 à 01:23:46  profilanswer
 

Je ne voudrais pas qu'on m'oublie :s
 

Citation :

J'essai de faire un serveur en mode W32. Le problème est que je n'arrive pas a recevoir le recv() quand quelqu'un le déclanche (j'utilise WSAAsyncSelect) car je ne sais pas quelle est le bon accept();.  
 
INFO : sauf si je me trompe le 1er paramètre de recv est le SOCKET accept().  

n°668145
Konar
Posté le 09-03-2004 à 02:28:05  profilanswer
 

Suisse a écrit :

Je ne voudrais pas qu'on m'oublie :s
 

Citation :

J'essai de faire un serveur en mode W32. Le problème est que je n'arrive pas a recevoir le recv() quand quelqu'un le déclanche (j'utilise WSAAsyncSelect) car je ne sais pas quelle est le bon accept();.  
 
INFO : sauf si je me trompe le 1er paramètre de recv est le SOCKET accept().  




ben perso quand je lis des trucs comme ça je préfère oublier de suite la vie...
 
primo : faut bien 12 lectures pour commencer a entrevoir de quoi tu parles.
deuxio : c'est quoi la question ?
chais pas... poste le bout de code ou tu penses que ca rate (pas 2000 lignes de code)
 
et pour ton 'info', oui, la socket renvoyée par le accept() est celle qu'il faut passer a recv() pour recevoir des données sur celle-ci. (ca parait logique)

n°668217
blackgodde​ss
vive le troll !
Posté le 09-03-2004 à 09:43:40  profilanswer
 

Suisse a écrit :

RAPELLE : Le serveur n'est pas un client/serveur :)  


 
euh ... non c'est sur, mais c'est bien dans le cadre d'un développement client/serveur non ?
 

Suisse a écrit :


Quelque chose comme un serveur ircd (pas exactement). Donc ~ 100 utilisateur simultané


---------------
-( BlackGoddess )-
n°669213
Suisse
Posté le 10-03-2004 à 02:07:44  profilanswer
 

Heu je ne suis pas sure de ce que tu veut dire mais, mon serveur N'EST PAS a même mon client :)
 
Et l'autre citation que tu a écrie, je veut faire en quelque sorte un ircd mais avec beaucoup moin de chose :)  
 
++
 
Suisse

n°670101
xterminhat​e
Si vis pacem, para bellum.
Posté le 10-03-2004 à 20:12:32  profilanswer
 

Rassures nous, le français n'est pas ta langue maternelle?
 
Cordialement,
   xter.

n°670475
Suisse
Posté le 11-03-2004 à 00:46:56  profilanswer
 

Oui _-_ mais pas français de france ...
Mais pourtant ma question est simple a comprendre !

n°670508
cricri_
Posté le 11-03-2004 à 08:48:40  profilanswer
 

Bah nan, on a beaucoup de mal à déchiffrer le message ...

n°671328
Suisse
Posté le 11-03-2004 à 23:50:25  profilanswer
 

Ok vais essayer autrement en example:)...
 
Par exemple je suis une centrale téléphonique.
Par exemple Cricri_ tu m'apelle.
La je répond et je note ton # de teléphone (acc = accept();)
Donc si tu veut me parlé pas de problème veut que j'ai ton # (recv(#tel);)
 
mais si quelqu'un d'autre me téléphone j'efface ton # de teléphone par le nouveau. Donc si tu essai de me parlé ton # n'est pas dans ma liste et je ne t'écoute / parle plus, mais si l'autre me parle pas de problème !
 
Vous comprenez mieux maintenant :s ?

n°671383
Konar
Posté le 12-03-2004 à 00:27:10  profilanswer
 

donc la dans ton proj ("Quelque chose comme un serveur ircd" ), tu ne sais pas comment gérer plusieurs connexions simultanées ?
 
ton proj marche quand 1 connexion se fait, mais ne fait plus ce qu'il faut avec plusieurs clients, et tu voudrais savoir comment faire pour supporter plusieurs connexions ?
 
(je confirme ta demande avant de tenter de répondre)

n°671394
Suisse
Posté le 12-03-2004 à 00:37:10  profilanswer
 

Tu a tout compris :)
Si tu est capable de lire ce qui sui répond, sinon oublie cela (tu va surement me répéter un peut le même principe).
 
Je ne sais plus ou j'ai lu cela mais, il parrais que je dois utiliser les struc (ou class mais je me trompe toujours et je ne sais quelle est le bon)
 
Quand un utilisateur se connecte j'ajoute la variable que accept() retourne dans cette struc.
 
Mais mon gros problème est que quand quelqu'un déclanche le FD_READ je dois chercher avec une variable (ou HANDLE) X (je la connais pas) dans la struc afin d'y retrouvé le bon accept()
 
Merci encore de bien vouloir "dé-crypter" mes messages québecois.
 
Suisse

n°671410
Konar
Posté le 12-03-2004 à 01:12:32  profilanswer
 

pour te donner un exemple (ou plutot un cours, mais bon...)
 
accept te retourne une variable de type SOCKET, pour te dire que la connexion a été acceptée. c'est sur cette socket que tu peux faire des opérations du type recv ou send (en passant la socket comme 1er argument de ces fonctions).
 
pour gérer plusieurs connexions tu as donc principalement 2 méthodes :
 - faire 1 thread par connexion. chaque thread s'occupe de sa connexion (de sa SOCKET), et fait des recv/send uniquement sur celle-ci. Par exemple après un accept(), tu crées 1 thread en lui passant la socket nouvellement créée.
 - 1 thread qui s'occupe de toutes les connexions. ca se fait en utilisant select(), qui utilise une ou des variables de type fd_set, et qq macros du type FD_ZERO, FD_SET, FD_ISSET, etc. ca permet de s'occuper de plusieurs connexions dans le meme thread (solution idéale pour nb de connexions > 100).
 
sinon j'ai rien compris a la fin de ton message.
poste un bout de code, surtout sur la partie avec ta struct/classe (en esperant que ton code n'est pas a l'image de ta parlance)

n°671430
Suisse
Posté le 12-03-2004 à 02:24:51  profilanswer
 

Citation :

accept te retourne une variable de type SOCKET, pour te dire que la connexion a été acceptée. c'est sur cette socket que tu peux faire des opérations du type recv ou send (en passant la socket comme 1er argument de ces fonctions).


Là tu ne m'apprend rien :)
 
Je vais essayer d'utiliser les thread et select  :cry: (tu ma un peut plus éclairsi  :bounce: ) sinon pour mon struct/classe j'était coissé, mais les thread devrais réglé ceci.  ;)
 
Sinon pourrais tu écrire un exemple  :ange: : -créer un thread
- thread pour le recv()  
 
(seulement au cas ou je ne réussi pas a le faire marché)
 
Encore merci !
 :hello: Suisse


Message édité par Suisse le 12-03-2004 à 02:32:37
n°671432
Konar
Posté le 12-03-2004 à 04:02:05  profilanswer
 

je vais pas non plus te faire tout ton prog faut pas abuser...
 
avec les qq exemples ci dessous et un minimum de compréhension des sockets, tu devrais etre capable de faire un truc basique qui marche a peu près.
 
créer un thread :

Code :
  1. DWORD WINAPI ThreadBordel(void *Param)
  2. {
  3.   // code du thread
  4. }
  5. // Création du thread
  6. // avec Param le paramètre passé au thread, par exemple une socket, ou autres...
  7. DWORD dwThreadID;
  8. HANDLE hThread = CreateThread(NULL, 0, ThreadBordel, Param, 0, &dwThreadID);


 
le select :
http://forum.hardware.fr/hardwaref [...] 7086-1.htm

n°671686
Suisse
Posté le 12-03-2004 à 13:15:53  profilanswer
 

[citation]je vais pas non plus te faire tout ton prog faut pas abuser... [/citation]
Je suis d'accord avec toi
 
Sinon je continue a passer des nuit blanche pour que sa marche :)
 
Encore merci ^^
 
Suisse

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Socket

 

Sujets relatifs
socket AF_UNIx (ou AF_LOCAL)[Debutant] Pb avec ObjectOutputStream et les socket
Que signifie "invalid_socket" ?envoyer un fichier autre que les .txt avec les socket
Socket TCP et Thread...choisir la carte réseau du socket en Java
problème de socket client --> bloquantes ou pasSocket standard win32/unix avec Borland c++ builder 6
[Borland] Client déconnecté = serveur :asyncronous socket error 10053[Java] socket: faire tourner plusieurs serveurs sur le meme port
Plus de sujets relatifs à : Socket


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR