Outils pour utilisateurs

Outils du site


lang:c:net:client_serveur

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
lang:c:net:client_serveur [2022/09/30 15:07] – Ajout de "sendmsg/recvmsg" rootlang:c:net:client_serveur [2023/01/27 15:35] (Version actuelle) – [connect sous Windows] : ajout d'une source root
Ligne 1: Ligne 1:
 =====TCP===== =====TCP=====
  
-====send/recv====+====connect sous Windows==== 
 + 
 +Pour ne pas avoir de connect bloquant et maitriser le timeout, on peut utiliser le code suivant : 
 + 
 +<code c> 
 +int error = -1; 
 +int len = sizeof(int); 
 +timeval tm; 
 +fd_set set; 
 +unsigned long ul = 1; 
 +ioctlsocket(Socket, FIONBIO, &ul);  // set as non-blocking 
 +bool ret = false; 
 +if (connect(Socket, (struct sockaddr *)&ServerAddress, 
 +      sizeof(ServerAddress)) == -1) { 
 +  tm.tv_sec = 10;  // set the timeout. 10s 
 +  tm.tv_usec = 0; 
 +  FD_ZERO(&set); 
 +  FD_SET(Socket, &set); 
 + 
 +  if (select(Socket + 1, NULL, &set, NULL, &tm) > 0) { 
 +    getsockopt(Socket, SOL_SOCKET, SO_ERROR, (char *)&error, 
 +           /*(socklen_t *)*/ &len); 
 +    if (error == 0) 
 +      ret = true; 
 +    else 
 +      ret = false; 
 +  } else 
 +    ret = false; 
 +} else 
 +  ret = true; 
 + 
 +ul = 0; 
 +ioctlsocket(Socket, FIONBIO, &ul);  // set as blocking 
 +if (!ret) { 
 +  closesocket(Socket); 
 +  fprintf(stderr, "Cannot Connect the server!/n"); 
 +
 +</code> 
 + 
 +[[https://social.msdn.microsoft.com/Forums/en-US/2202d113-212d-420d-9e7b-11268de9ce90/win32-tcp-connect-timeout|Win32: TCP connect timeout]] {{ :lang:c:net:win32_tcp_connect_timeout_27_01_2023_15_32_49_.html |Archive du 24/08/2018 le 27/01/2023}} 
 +====send/recv sous Linux====
  
 <WRAP center round important 60%> <WRAP center round important 60%>
Ligne 187: Ligne 227:
 </file> </file>
  
-====sendmsg/recvmsg====+====sendmsg/recvmsg sous Linux====
  
 Transfert d'un file descripteur via socket Unix. Transfert d'un file descripteur via socket Unix.
lang/c/net/client_serveur.1664543240.txt.gz · Dernière modification : 2022/09/30 15:07 de root