Socket C++

Socket C++ - C++ - Programmation

Marsh Posté le 15-12-2004 à 18:16:39    

Bonjours, je voudrais commencer une petite application en mode console, qui servirait simplement à établir une connexion entre 2 pc... mais honnetement coté réseau je connait que dale... On m'a orienté vers les sockets, qui peuvent transporté l'informations...  
 
Mais pour établir une connexion ne faut-il pas un serveur ? et comment je fait se serveur, qui recoit l'informations ?
 
Si je veut relier 2 pc, me faut un serveur qui redirige l'information ? ou les deux serais client ET serveur ?
 
Merci de votre futur aide... Le tout est en C++, en console, sous Windows, et pour simplement interchangé du text, un chat quoi...

Reply

Marsh Posté le 15-12-2004 à 18:16:39   

Reply

Marsh Posté le 15-12-2004 à 18:28:04    

en TCP/IP tu as un serveur et des clients
en UDP/IP tu as des peers on va dire (pas de notion client/serveur au niveau réseau)

Reply

Marsh Posté le 15-12-2004 à 18:29:57    

bein, il y en a 1 qui fait serveur et l'autre client.
(edit: en tcp/ip)
 
Tu lances le serveur qui écoute sur un port de l'ordi.
Ensuite le client va se connecter au serveur (bien sûr, tu dois lui spécifier l'adresse et le port du serveur)
 
Il te faudrait lire quelques tutos à ce sujet.


Message édité par SomeBugsInMe le 15-12-2004 à 18:31:03
Reply

Marsh Posté le 15-12-2004 à 18:31:37    

Reply

Marsh Posté le 15-12-2004 à 18:32:37    

SomeBugsInMe a écrit :

bein, il y en a 1 qui fait serveur et l'autre client.
(edit: en tcp/ip)
 
Tu lances le serveur qui écoute sur un port de l'ordi.
Ensuite le client va se connecter au serveur (bien sûr, tu dois lui spécifier l'adresse et le port du serveur)


il faut que chaque machine soit à la fois client et serveur, sinon la communication ne se fera que dans un sens :o

Reply

Marsh Posté le 15-12-2004 à 18:34:12    

bin non.
 
une fois la connexion établie, autant le serveur que les clients peuvent envoyer et recevoir des données.

Reply

Marsh Posté le 15-12-2004 à 18:38:18    

bjone a écrit :

bin non.
 
une fois la connexion établie, autant le serveur que les clients peuvent envoyer et recevoir des données.

ben oui, mais le client devra également écouter les connections entrantes non :??:

Reply

Marsh Posté le 15-12-2004 à 18:41:32    

non. ou alors je vois pas ce que tu veux dire. :??:
 
disons qu'en TCP/IP les clients ne peuvent communiquer qu'entre eux qu'à travers le serveur, et grâce au protocole de l'application si il le permet.


Message édité par bjone le 15-12-2004 à 18:42:31
Reply

Marsh Posté le 15-12-2004 à 18:50:25    

bjone a écrit :

non. ou alors je vois pas ce que tu veux dire. :??:
 
disons qu'en TCP/IP les clients ne peuvent communiquer qu'entre eux qu'à travers le serveur, et grâce au protocole de l'application si il le permet.


ce que je veux dire en fait, c'est qu'apparemment, Lord_Viking veut développer une sorte d'appli P2P.
effectivement, dans le cas de protocoles comme par exemple IRC, le serveur écoute les connections des clients, et dés qu'un client envoie un message, il le dispatche aux autres clients.
comment gérer ça dans le cas de Lord_Viking ? imagine, tu as une machine A qui écoute et une machine B qui se connecte sur A.
A recevra la demande de connection de B, et lui répondra le cas échéant. maintenant, que se passe t'il si A essaie de se connecter sur B, étant donné que B n'a aucun socket d'écoute :??:
ne faut il pas dans ce cas, 2 sockets par machine ? un socket qui écoutera les connections entrantes (qui sera éventuellement exécuté dans un thread) et un autre qui sera créé dés qu'une connection entrante sera acceptée et qui sera chargé de répondre à 'autre machine ?

Reply

Marsh Posté le 15-12-2004 à 18:53:00    

Et comment j'ouvre mon port lol comme vous dites ? *noob*
 
Je sais pas si le principe est le meme mais pour commencer j'veut pas faire un IRC, j'veut simplement connecter et communiquer enre 2 pc... les deux recoivent et envoyent des messages à l'autres...


Message édité par Lord_VKing le 15-12-2004 à 18:56:22
Reply

Marsh Posté le 15-12-2004 à 18:53:00   

Reply

Marsh Posté le 15-12-2004 à 18:56:04    

Harkonnen a écrit :

ce que je veux dire en fait, c'est qu'apparemment, Lord_Viking veut développer une sorte d'appli P2P.
effectivement, dans le cas de protocoles comme par exemple IRC, le serveur écoute les connections des clients, et dés qu'un client envoie un message, il le dispatche aux autres clients.
comment gérer ça dans le cas de Lord_Viking ? imagine, tu as une machine A qui écoute et une machine B qui se connecte sur A.
A recevra la demande de connection de B, et lui répondra le cas échéant. maintenant, que se passe t'il si A essaie de se connecter sur B, étant donné que B n'a aucun socket d'écoute :??:
ne faut il pas dans ce cas, 2 sockets par machine ? un socket qui écoutera les connections entrantes (qui sera éventuellement exécuté dans un thread) et un autre qui sera créé dés qu'une connection entrante sera acceptée et qui sera chargé de répondre à 'autre machine ?


 
à bah là oui je veux bien.
enfin je sais pas, vue que Lord_Vking a pas l'air non plus d'être sûr de ce qu'il veut ;) :D

Reply

Marsh Posté le 15-12-2004 à 18:57:19    

J'veut, comme dit plus faire un petit chat à 2 pc... un ki écrit quelque chose et l'envoi à l'autre... et l'autre le recoit... ce doit pas etre tres complexe...

Reply

Marsh Posté le 15-12-2004 à 18:57:33    

Lord_Vking >> tu veux faire ça, pour que ça marche sur internet ?
 
ou que ça marche par exemple uniquement en LAN ?
 
en LAN, tu peux te faire un chat en UDP par broadcast.


Message édité par bjone le 15-12-2004 à 18:57:49
Reply

Marsh Posté le 15-12-2004 à 20:05:40    

si possible par internet, vu que internet inclu le reseau ( via connexion internet ) mais que reseau n'inclu pas internet...

Reply

Marsh Posté le 15-12-2004 à 23:41:20    

Pour un chat rudimentaire (point à point), aucune connexion necessaire, juste un echange avec udp suffit : appels sendto(), rcvfrom().


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 16-12-2004 à 04:30:30    

Ok.. et j'utilise sa comment c fonctions la.. ? j'pourrait avoir un ptit exemple tres simple... genre :::
 
sendto(111.111.111.111, "Allo" ); ... j'imagine c'est plus complexe, mais un ptit exemple serait aprécier, de meme que les librairies de ces fonctions..

Reply

Marsh Posté le 16-12-2004 à 09:16:16    

Sous win32 : #include<winsock.h> et link ton code avec WS2_32.lib. (lib winsock2).


---------------
Cordialement, Xterm-in'Hate...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed