Je dois pouvoir effectuer une communication entre 2 processus en langage C avec des socket sous UNIX.
J'ai commencé à coder le serveur et le client. Lorsque je démarre le serveur, ensuite le client, tout se passe bien. Le serveur passe dans la fonction accept() qui bloque tant que le serveur n'a pas reçu de demande de connexion d'un client. Le client arrive bien à se connecter. tout se passe bien de lors de la connexion (du moins, je pense).
Le problème est que je n'arrive pas a envoyer une chaîne de caractère entre le client et le serveur. Vu que l'appel de la fonction read() dans le code du serveur lit quelques chose (car read() est un appel bloquant), je me dis qu'il reçoit quelques chose. Mais lors de l'affichage, la chaîne de caractère reçu est vide. Ce que je ne comprends pas
Je reprends un peu ce sujet, parce que j'ai tenté de faire un serveur multi-client avec une simple boucle avec un accept() dedans.
C'est-à-dire que le serveur reçoit une chaîne de caractère vide. Maintenant que j'ai une version récente de gcc, je pense que l'erreur doit venir de mon code mais je ne vois pas où.
Je ne comprends pas ce que tu veux dire, je suis un peu dépassé.
Je cherche simplement a faire communiquer des processus avec des sockets sous unix.
J'ai cherché sur le net pour essayé de répondre à mes interrogations, mais pas de réponses très concluante.
Je ne vois pas où la chaîne de caractère "Hello world !" est envoyé, je ne comprends pas du fait que, le client est bien connecté au serveur, et qu'il est censé recevoir cette chaîne.
Bien que ce soit possible sous unix, il est déconseillé d'utiliser write pour envoyer un message sur le réseau, je te conseille fortement d'utiliser send. Idem pour read, utilise recv. Pour le client, il est de bon usage d'utiliser getaddrinfo aussi.
Mis à part ça et que le code n'est pas bien indenté (un peu compact à mon avis) je ne vois pas d'erreur.
git is great because Linus did it, mercurial is better because he didn't.
Je ne comprends pas ce que tu veux dire, je suis un peu dépassé.
Je cherche simplement a faire communiquer des processus avec des sockets sous unix.
J'ai cherché sur le net pour essayé de répondre à mes interrogations, mais pas de réponses très concluante.
Je ne vois pas où la chaîne de caractère "Hello world !" est envoyé, je ne comprends pas du fait que, le client est bien connecté au serveur, et qu'il est censé recevoir cette chaîne.
wireshark permet de regarder ce qui transite sur le réseau.
De ce faite tu peux regarder ce que tu envois et ce qui tu reçois. Cela permettra peut être de comprendre pourquoi ton programme ne marche pas.
Communication inter-process avec socket
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.