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

  FORUM HardWare.fr
  Programmation
  C

  Socket : la fonction connect.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Socket : la fonction connect.

n°930859
tertulia
Posté le 23-12-2004 à 12:16:17  profilanswer
 

Voila j'ai fait deux petites applications qui communiquent par socket donc un client et un serveur jusque la rien de supprenant.
 
seulement mon application client peut aussi tourner sans etre connectée a un serveur.
 
donc a chaque fois que je veux envoyer un message au serveur je regarde si  mon client et deja connecte au serveur:
1/ oui deja connecté -> pas de pb j'envoie direct le message
2/ non (fallait s'y attendre) -> j'essaye de me connecter avant (au cas ou  le serveur a ete lance entre tmps) et si oui j'envoie le message sinon je skip l'envoie.
 
voila ce que je fais. Tout fonctionne correctement excepte que la fonction connect() ne retourne pas tout de suite c'est pas bien long environ 0.5 sec mais tres genant pour mon application client.
 
le socket que j'utilise est non bloquant.
 
voici quelques bouts de mon code  
 

Code :
  1. int  Win32SocketClient_Con(PWin32SocketClient self)
  2. {
  3.   self->__bIsConnected = LH_FALSE;
  4.   if (WSAStartup(MAKEWORD(2, 0), &WSAData) == SOCKET_ERROR)
  5.   {
  6.     return SOCKET_ERROR;
  7.   }
  8.   self->__socket  = socket(AF_INET, SOCK_STREAM, 0);        /* create the socket */
  9.   if (self->__socket == INVALID_SOCKET)
  10.   {
  11.     return INVALID_SOCKET;
  12.   }
  13.   return err;
  14. }
  15. int  Win32SocketClient_ConnectToServer(PWin32SocketClient self,
  16.                                             const char* szIPAdd,
  17.                                             unsigned long ulPortNb)
  18. {
  19.   int err = 0;
  20.   struct sockaddr_in remote_socket;
  21.   ioctlsocket(self->__socket, FIONBIO, 1);
  22.   memset(&(remote_socket), 0, sizeof(struct sockaddr_in));
  23.   remote_socket.sin_addr.s_addr = inet_addr( szIPAdd );
  24.   remote_socket.sin_family = AF_INET;
  25.   remote_socket.sin_port = htons((unsigned short)ulPortNb);
  26.   err = connect(self->__socket, (SOCKADDR *)&remote_socket, sizeof(SOCKADDR));
  27.   if (err) TRACE_ERA1 (("Error in connection = %d\n" ),WSAGetLastError());
  28.   if (!err) self->__bIsConnected = LH_TRUE;
  29.   return err;
  30. }

mood
Publicité
Posté le 23-12-2004 à 12:16:17  profilanswer
 


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

  Socket : la fonction connect.

 

Sujets relatifs
help: probleme de fonction .h en CQuestion à propos d'une fonction du htacces de PHPNuke
fonction mysql_connect [RESOLU]urgent : La Fonction Win32::MsgBox ne fonctionne pas correctement
Echec d'appel d'une fonction COMProblème syntaxique de définition de template pour une fonction membre
Sortir une variable d'un fonction ?[Pb] Mysql 4.0.18 et socket TCP sous Linux Debian Sarge [RESOLU]
Socket C++WSAGetLastError et fonction Connect(...) pour socket
Plus de sujets relatifs à : Socket : la fonction connect.


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