Socket C++

Socket C++ - Programmation

Marsh Posté le 26-05-2001 à 15:33:38    

Salut !
 
Je suis en train d'essayer de programmer en C++ les sockets.
Il y une chose que je n'arrive pas à résoudre :
je boucle plusieurs fois sur la fonction send() mais cela
n'envoie que la première fois, les autres fois, le destinataire
ne reçoit rien. Aucune erreur n'est renvoyéee par send() ou
recv().
Quelqu'un peut-il m'aider ?

Reply

Marsh Posté le 26-05-2001 à 15:33:38   

Reply

Marsh Posté le 26-05-2001 à 15:46:51    

Tu poses pas une question dont la reponse n'est pas rapide!  
Je suppose que tes sous win alors il te faut passer par les sock asynchrones : en gros tu selectionnes une socket en ecriture , lecture et connection asynchrones et elle enverra des msg FD_READ, FD_WRITE,... que tu pourras traiter comme n'importe quel evenement win. Si g le tps et que tas la patience je te retrouvera un ptit exemple :)

Reply

Marsh Posté le 26-05-2001 à 16:06:21    

qu'envoies tu exactement ? send() envoie toutes les données d'un coup, pas besoin de boucler.

Reply

Marsh Posté le 26-05-2001 à 16:07:01    

j'oublie de préciser, c'est sur recv() qu'il faut boucler. tu as peut être confondu dans ton code.

Reply

Marsh Posté le 26-05-2001 à 16:19:02    

send et recv sont des fonctions bloquantes alors s'il envoie ou recoit un gros paquet de donnees, un transfert de fichier par ex, ca se fait pas d'un coup et le meilleur moyen de gerer ca cest les sockets asynchrones.

Reply

Marsh Posté le 26-05-2001 à 16:24:48    

Je retrouve pas le code mais le truc c d'utiliser WSAAsyncSelect pour slectionner la socket en mode async :
WSAAsyncSelect(soc, hWnd, WM_SOCKET_SELECT, FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE);
/* hWnd est la fenetre qui recevra les msg
WM_SOCKET_SELECT est le msg lie a la sock (defini comme WM_USER+1 par ex)
le reste ce sont les msg qui seront recu */
Maintenant qd tu feras un send ou un recv il rendra tt de suite la main et a chaque ecriture il enverra FD_WRITE et a chaque lecture il enverra un FD_READ.
A toi de gerer tout ca...

Reply

Marsh Posté le 26-05-2001 à 17:59:27    

Merci à vous tous (et surtout Amadeus :-))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed