Socket sous linux
Résolu
nilly
Messages postés
154
Date d'inscription
Statut
Membre
Dernière intervention
-
nilly Messages postés 154 Date d'inscription Statut Membre Dernière intervention -
nilly Messages postés 154 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai écrit deux programmes en langage C sous linux un serveur.c et un client.c et il faut effectué une communication entre ces deux programmes via les sockets, les programmes échangent des chaines de caractères.
mes programmes marchent parfaitement ( je fait entrée les messages échanges entre le serveur et le client par un scanf) et l'échange aussi est correct quand je fais entrée un simple mot.
le problème c'est que quand je tape une phrase entière c'est seulement le premier mot qui est pris en considération
c-à-d la lecture du message se termine si un espacement est rencontré.
je comprend pas pourquoi
quelqu'un peut m'aidai s.v.p??
et merci
j'ai écrit deux programmes en langage C sous linux un serveur.c et un client.c et il faut effectué une communication entre ces deux programmes via les sockets, les programmes échangent des chaines de caractères.
mes programmes marchent parfaitement ( je fait entrée les messages échanges entre le serveur et le client par un scanf) et l'échange aussi est correct quand je fais entrée un simple mot.
le problème c'est que quand je tape une phrase entière c'est seulement le premier mot qui est pris en considération
c-à-d la lecture du message se termine si un espacement est rencontré.
je comprend pas pourquoi
quelqu'un peut m'aidai s.v.p??
et merci
A voir également:
- Socket sous linux
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
- Linux mint 22.1 - Accueil - Linux
5 réponses
N'ayant pas ton code, je ne puis que supputer une hypothèse, à savoir:
- si l'échange se fait entre les deux machines, il n'y a, à priori pas de raison qu'un nombre quelconque de caractères ne soit pas transmis. Pour moi, l'erreur proviendrait du scanf qui considère l'espace comme un séparateur.
Personnellement je ne l'utilise quasiment jamais car je n'ai jamais vraiment bien compris comment l'utiliser.
Si tu penses que l'erreur vient de là et que tu veuilles absolument l'utiliser, je te souhaite de croiser le chemin de fiddy qui est un spécialiste, entre autre, de la saisie clavier.
- si l'échange se fait entre les deux machines, il n'y a, à priori pas de raison qu'un nombre quelconque de caractères ne soit pas transmis. Pour moi, l'erreur proviendrait du scanf qui considère l'espace comme un séparateur.
Personnellement je ne l'utilise quasiment jamais car je n'ai jamais vraiment bien compris comment l'utiliser.
Si tu penses que l'erreur vient de là et que tu veuilles absolument l'utiliser, je te souhaite de croiser le chemin de fiddy qui est un spécialiste, entre autre, de la saisie clavier.
Salut,
Oui, scanf s'arrête au premier espace rencontré.
Si tu veux utiliser scanf ! utilise plutôt :
Ou, plus simplement fgets, :
Cdlt
Oui, scanf s'arrête au premier espace rencontré.
Si tu veux utiliser scanf ! utilise plutôt :
char buffer[250]; scanf("%249[^\n]",buffer);
Ou, plus simplement fgets, :
char buffer[250]; fgets(buffer,sizeof buffer,stdin);
Cdlt
salut
merci fiddy ça marche mais il' y a un autre problème
voici un exemple d'exécution
serveur : client :
$./serveur $./client
attente d'une communication communication etablie
communication etablie entrez votre message :
le client à envoyer : aa bb aa bb
rependre au client :
gg ff le serveur a envoyer :
Erreur de sefmentation (core dumped)
et ça s'arrete là.
?????
merci fiddy ça marche mais il' y a un autre problème
voici un exemple d'exécution
serveur : client :
$./serveur $./client
attente d'une communication communication etablie
communication etablie entrez votre message :
le client à envoyer : aa bb aa bb
rependre au client :
gg ff le serveur a envoyer :
Erreur de sefmentation (core dumped)
et ça s'arrete là.
?????
dsl c'est pas assez claire là haut
voilà
terminale serveur :
serveur :
$./serveur
attente d'une communication
communication etablie
le client à envoyer : aa bb
rependre au client :
gg ff
Erreur de segmentation (core dumped)
terminale client :
client :
$./client
communication etablie
entrez votre message :
aa bb
le serveur a envoyer :
et ça s'arréte là
j'ai pas le temps pour saisir un message au client par le serveur
voilà
terminale serveur :
serveur :
$./serveur
attente d'une communication
communication etablie
le client à envoyer : aa bb
rependre au client :
gg ff
Erreur de segmentation (core dumped)
terminale client :
client :
$./client
communication etablie
entrez votre message :
aa bb
le serveur a envoyer :
et ça s'arréte là
j'ai pas le temps pour saisir un message au client par le serveur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question