alors voila, j'ai un programme qui ouvre une socket, comme ça :
#define SOCK "./masocket"
int fd,len;
struct sockaddr_un sa;
char buf[]="hello";
fd = socket(PF_UNIX, SOCK_STREAM, 0);
len=sizeof(sa);
sa.sun_family=AF_UNIX;
strcpy(sa.sun_path,SOCK);
bind(fd,(struct sockaddr *)&sa,len)
listen(fd,5);
connect(fd,(struct sockaddr *)&sa,len);
Après compilation, connect() me renvoie un EINVAL (Invalid argument), alors que si je le supprime dans ce programme, et que j'en crée un second séparé qui fait le connect() (il fait tout pareil, sauf connect() à la place de listen(), un client quoi), ça fonctionne (pas de EINVAL chez le client).
la question est simple et évidente : pourquoi je peut pas tout faire (listen puis connect) dans un seul programme ? Je sais, ça ne servirait à rien, mais quand même.
# Ben...
Posté par pasBill pasGates . Évalué à 5.
Resultat, ton connect prend un socket qui est deja connecte et essaie de le connecter de nouveau --> BOUM !
# Commentaire supprimé
Posté par Anonyme . Évalué à 7.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: connect() sur une socket
Posté par Volnai . Évalué à 1.
Merci en tout cas !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.