Socket connectée ? [C] [WINSOCK] - C - Programmation
MarshPosté le 28-06-2007 à 10:23:52
Pas initialisée, ça dépend surtout de vous. Pour le reste, ça dépend du mode de la socket, bloquant ou non, mais c'est toujours en testant les WSAGetLastError, select, getsockopt (sur SO_ERROR), recv/send et compagnie. Niveau connexion, votre socket peut avoir l'état: - pas connectée: WSAGetLastError retourne WSAENOTCONN pour à peu près tous les appels supposant une connexion réalisée, par exemple getpeername - en cours de connection: WSAGetLastError retourne WSAEWOULDBLOCK suite à "l'échec" du connect - connectée: connect ok en mode bloquant et en mode non-bloquant, select en écriture OK et pas d'erreur retournée par getsockopt pour SO_ERROR - déconnectée: select en lecture OK et erreur sur un recv, typiquement un WSAECONNRESET retourné par WSAGetLastError (connection reset by peer) ou un WSAEDISCON (à la prochaine)
Marsh Posté le 28-06-2007 à 10:23:52
Pas initialisée, ça dépend surtout de vous. Pour le reste, ça dépend du mode de la socket, bloquant ou non, mais c'est toujours en testant les WSAGetLastError, select, getsockopt (sur SO_ERROR), recv/send et compagnie. Niveau connexion, votre socket peut avoir l'état:
- pas connectée: WSAGetLastError retourne WSAENOTCONN pour à peu près tous les appels supposant une connexion réalisée, par exemple getpeername
- en cours de connection: WSAGetLastError retourne WSAEWOULDBLOCK suite à "l'échec" du connect
- connectée: connect ok en mode bloquant et en mode non-bloquant, select en écriture OK et pas d'erreur retournée par getsockopt pour SO_ERROR
- déconnectée: select en lecture OK et erreur sur un recv, typiquement un WSAECONNRESET retourné par WSAGetLastError (connection reset by peer) ou un WSAEDISCON (à la prochaine)