Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

protocole de communication reseau

6 réponses
Avatar
Bruno Nogent
Bonjour,
Je dois realiser un protocole entre deux programme C ( un client et un
serveur)
en utilisant des sockets.

Connaitriez-vous des exemples de protocole de communication qui prennent en
charge des messages d'une taille superieure au buffers de reception et
pouvant traiter un echange de donnees oriente service ?
ex :
le client se connecte au serveur
le client discute avec un service serveur A via cette connection
le client discute avec un service serveur B via cette meme connection
Comment fragmenter les grands messages et traiter les messages destines aux
services differents

Sinon comment cela est-il generalement implemente ?

Merci

6 réponses

Avatar
Jean-Marc
Bruno Nogent" a écrit dans le message de
news:c53ik8$agj$
Bonjour,
Je dois realiser un protocole entre deux programme C ( un client et un
serveur)
en utilisant des sockets.


Hello,

quelques conseils de lecture (les fonctions suivantes ne font pas partie de
la norme, mais ont les trouve sur la plupart des OS):

send
recv
listen
socket
bind
accept
FD_CLEAR
FD_ISSET

En regardant l'aide de ces fonctions, tu dois avoir de quoi écrire un
client, un serveur et mettre en place une communication entre les 2.
L'utilisation de accept et des macro FD_* permettra de gérer les messages
plus grands que le buffers d'émission et de réception.

En complément, un peu de Google : "socket programming C" te donnera plein
de liens avec tout ce qu'il faut comme explications sur le sujet, tous OS
confondus.

Jean-Marc

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Bruno Nogent" wrote:

Je dois realiser un protocole entre deux programme C ( un client et un
serveur)
en utilisant des sockets.


Nice try! Un programme n'est pas plus C que Pascal ou BASIC. Une fois
compilé-lié, c'est un exécutable. Point. Pour la justification pour poster
sur le forum C, c'est raté!

Connaitriez-vous des exemples de protocole de communication qui prennent en
charge des messages d'une taille superieure au buffers de reception et
pouvant traiter un echange de donnees oriente service ?


Depuis quand est-ce qu'un protocole a à voir avec un langage de programmation
?

Il existe un forum consacré aux réseaux.

news:fr.reseaux.telecom.techniques

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Jean-Luc Andréï
Salut,
j'y connais rien dans la programmation socket, est ce que ces fonctions
pourraient fonctionner entre un programme serveur (sous linux) et un
programme client (sous windows) ou alors faut il utiliser autre chose?
"Jean-Marc" a écrit dans le message de
news:40759be3$0$1973$
Bruno Nogent" a écrit dans le message de
news:c53ik8$agj$
Bonjour,
Je dois realiser un protocole entre deux programme C ( un client et un
serveur)
en utilisant des sockets.


Hello,

quelques conseils de lecture (les fonctions suivantes ne font pas partie
de

la norme, mais ont les trouve sur la plupart des OS):

send
recv
listen
socket
bind
accept
FD_CLEAR
FD_ISSET

En regardant l'aide de ces fonctions, tu dois avoir de quoi écrire un
client, un serveur et mettre en place une communication entre les 2.
L'utilisation de accept et des macro FD_* permettra de gérer les messages
plus grands que le buffers d'émission et de réception.

En complément, un peu de Google : "socket programming C" te donnera plein
de liens avec tout ce qu'il faut comme explications sur le sujet, tous OS
confondus.

Jean-Marc






Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Jean-Luc Andréï" wrote:

j'y connais rien dans la programmation socket, est ce que ces fonctions
pourraient fonctionner entre un programme serveur (sous linux) et un
programme client (sous windows)


Oui. Le protocole (TCP/IP, UDP etc.) n'a rien à voir avec les fonctions. Il
est indépendant de la machine. Heureusement, sinon, je vois mal comment
fonctionneraient les réseaux locaux ou Internet...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Jean-Luc Andréï
Merci,
mais du coups il faut quand meme faire quelque chose pour lui dire de passer
par TCP/IP, ou c'est directement inclue dans ces meme fonctions?

"Emmanuel Delahaye" a écrit dans le message de
news:
In 'fr.comp.lang.c', "Jean-Luc Andréï" wrote:

j'y connais rien dans la programmation socket, est ce que ces fonctions
pourraient fonctionner entre un programme serveur (sous linux) et un
programme client (sous windows)


Oui. Le protocole (TCP/IP, UDP etc.) n'a rien à voir avec les fonctions.
Il

est indépendant de la machine. Heureusement, sinon, je vois mal comment
fonctionneraient les réseaux locaux ou Internet...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/



Avatar
Yves ROMAN
"Emmanuel Delahaye" a écrit dans le message de
news:
In 'fr.comp.lang.c', "Jean-Luc Andréï" wrote:

j'y connais rien dans la programmation socket, est ce que ces fonctions
pourraient fonctionner entre un programme serveur (sous linux) et un
programme client (sous windows)


Oui. Le protocole (TCP/IP, UDP etc.) n'a rien à voir avec les fonctions.
Il

est indépendant de la machine. Heureusement, sinon, je vois mal comment
fonctionneraient les réseaux locaux ou Internet...



Merci,
mais du coups il faut quand meme faire quelque chose pour lui dire de passer
par TCP/IP, ou c'est directement inclue dans ces meme fonctions?



A la creation de la socket (fonction socket()) on précise le protocole utilisé
et le type de paquets.

Il reste quand même à faire attention au format des données qu'on transmet via
socket, et entre autres au format des entiers (little ou big endian) : on
utilise dans ce cas les fonctions ntoh{sl} et hton{sl} pour convertir du format
local de la machine au format réseau