begin process at 2010 02 10 08:26:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

C'est quoi un socket? Ou y a t-il un bon tutorial?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

C'est quoi un socket? Ou y a t-il un bon tutorial?

mercredi 4 janvier 2006 à 20:14:06 | C'est quoi un socket? Ou y a t-il un bon tutorial?

Slown

Membre Club
Bien le bonjour! Je voudrais savoir a quoi servent les socket (ou winsock). J'voi partout des tutz sur ça mais on dit jamais a quoi ça sert concretement. Donc voila, si vous pouviez eclairer ma lanterne ça serait gantil. Un exemple concret serait appreciable. Sinon connaitriez vous des tutoriaux qui expliquent ce domaine de A à Z? Ou même un livre pourquoi pas?
J'vous remercie de votre attention, ciao, Slown.

Slown

mercredi 4 janvier 2006 à 20:44:56 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

rrk275

Bah le mot en lui meme veuty dire douille .. en anglais ..
et alors a quoi ca sert et bah a "discuter" avec d'autre ordi par le language de programmetion...
le code suivant permet de se connecter a un serveur : (la connexion n'est pas obligatoire mais .. c'est plus simple)
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
permet d'initialiser le code dans les entetes ..
SOCKADDR_IN sin;//declare un variable qui contiendra tous les parametres de notre socket

HOSTENT* ServerInfos;// ca c'est si tu veux te connecter a un nom de domaine .. pour connaitre l'ip
ServerInfos = gethostbyname("smtp.laposte.net");

sin.sin_addr.s_addr = *((u_long*) ServerInfos->h_addr);// sinon tu peux mettre sin.sin_addr.s_addr= inet_addr("192.168.0.5");
// pour se connecter a 192.168.0.5 remarque c'est une chaine ;..
sin.sin_family = AF_INET;//laisse ca ... ca permet de se connecter a d'autre ordi
sin.sin_port = htons(25);// ca c'est le port choisi .. sur le serveur ..
sock = socket(AF_INET,SOCK_STREAM,0);//cree la socket

if((connect(sock, (SOCKADDR *)&sin, sizeof(sin)))!= INVALID_SOCKET)//connect se connecte et le if verifie la connexion
//en gros savoir isi tu t'es pas pris un vent  !!
maintenant un code assez simple
au fait il faut l'entete #include <winsock2.h> et inclure les librairies libws2_32.a ...
un code simple qui ..; se connecte !!
int stop=1;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr            = inet_addr(argv);
sin.sin_family                = AF_INET;
sin.sin_port                = htons(240);// j'ai choisi le port 240
while(stop){
if((connect(sock, (SOCKADDR *)&sin, sizeof(sin)))!= INVALID_SOCKET)stop=0;
}
//à ce niveau la on est connecté !!
 maintenant faire un hello world version  socket !!
et bah pour envoyer :
char hello[]="un petit hello world !!";
send(sock, hello,strlen(hello), 0);//donc premier arg : la socket utilisée , le 2eme ta variable (une chaine), 3 la longueur de celle ci //et 4 bah laisse a 0... donc tu ajoute ces deux code et la tu envoie un petit world a celui qui se connecte !!
maintenant recuperer le hello world :
pour cela il faut creer une socket mais serveur
WSADATA WSAData;//les memes ..
int stop=1;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;//atention j'en ai fait 2 !!
SOCKADDR_IN sin;
SOCKADDR_IN csin;// tjr 2
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr            = INADDR_ANY;
sin.sin_family                = AF_INET;
sin.sin_port                = htons(240);// bon on se met sur le bon port (on avait pris 240 )
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
while(stop)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{stop = 0;
}
}
//et la t'es connecté !! bon pour pas que ca t'embete je poste les deux code juste apres ...
rrk275
mercredi 4 janvier 2006 à 20:51:39 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

rrk275

le client :
#include <cstdlib>
#include <iostream>
#include <winsock2.h>
using namespace std;

int main(int argc, char *argv[])
{
int stop=1;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr      = inet_addr("192.168.0.5");
sin.sin_family                = AF_INET;
sin.sin_port                = htons(240);// j'ai choisi le port 240
while(stop){
if((connect(sock, (SOCKADDR *)&sin, sizeof(sin)))!= INVALID_SOCKET)stop=0;
}
char hello[]="un petit hello world !!\n";
send(sock, hello,strlen(hello), 0);//donc premier arg : la socket utilisée , le 2eme ta variable (une chaine), 3 la longueur de celle ci
//et 4 bah laisse a 0... donc tu ajoute ces deux code et la tu envoie un petit world a celui qui se connecte !!
system("PAUSE");
return EXIT_SUCCESS;
}

rrk275
mercredi 4 janvier 2006 à 20:52:00 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

rrk275

le serveur :
#include <cstdlib>
#include <iostream>
#include <winsock2.h>
using namespace std;

int main(int argc, char *argv[])
{
 WSADATA WSAData;//les memes ..
int stop=1;
char buffer[50];
for(int i=0;i<50;i++)buffer[i] = '\0';
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKET csock;//atention j'en ai fait 2 !!
SOCKADDR_IN sin;
SOCKADDR_IN csin;// tjr 2
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr            = INADDR_ANY;
sin.sin_family                = AF_INET;
sin.sin_port                = htons(240);// bon on se met sur le bon port (on avait pris 240 )
bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);
while(stop)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{stop = 0;
}
}   
recv(csock, buffer, 50, 0);
printf("%s",buffer);
    system("PAUSE");
    return EXIT_SUCCESS;
}


rrk275
mercredi 4 janvier 2006 à 20:52:47 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

rrk275

bon bah j'espere que la t'aura tout ce qui te faut pour debuter le sockets ..
(tres vite tu auras besoin des threads ...)..

rrk275
mercredi 4 janvier 2006 à 21:37:17 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

aardman

Membre Club
Salut,
rrk275> tu crois vraiment que paster des gros bouts de code brut (sans explication, sans traitement d'erreur...) ca va l'aider à apprendre les sockets ? il ne va rien comprendre et ca aura plutot tendance à le dégouter.

mercredi 4 janvier 2006 à 21:40:11 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

rrk275

Chacun ses gouts mais la je pense avor mis des explications ...(dans le 1er code)
les 2 autres montrant une simple  utilisation...;

rrk275
mercredi 4 janvier 2006 à 22:45:57 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

lacousine

Exemple d'application ou tu pourrais te servir de socket.

Tu veux offrir de partager des fichiers ( .doc, .wav, .mp3 ...) avec d'autres utilisateurs. Tu te fais une grosse banque de données et tu permet le téléchargement via ton ordinateur à distance. Tu dois faire 2 programmes ... 1 est un serveur ( genre MSN ) et l'autre l'application qui se connecte à ton serveur ( le client que tu utilises pour parler sur MSN ). Ou une autre exemple que MSN... MIRC... on se connecte à toi ( le serveur MIRC ) et tout les clients se connecte et discute entre eux. Et oui tu peux faire un chat avec des sockets.

Moi j'aime bien comparer les sokets à des portes sur internet qui permettent d'avoir des informations. ... ou plutôt à des téléphones. Des gens appelent d'autre et échange entre eux. Ils peuvent échanger n'importe quel information.... texte, vocal, image et musique.

Et voilà mon explication de SOCKET.



Mieux vaut être blonde et poser des questions que de rester ignorante !!!!
jeudi 5 janvier 2006 à 14:49:23 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

Slown

Membre Club
Merci a tous pour vos reponses. Je vais me lancer dans la programmation des socket, rrk275 m'a mis l'eau a la bouche. Et je pense qu'avec quelques tutz ça doit etre faisable. Merci a lacousine, qui ma eclairé et donnée des applications concretes ce qui m'a encore plus envie de m'y mettre. Merci encore, a+, Slown.

Slown

mercredi 11 janvier 2006 à 14:40:41 | Re : C'est quoi un socket? Ou y a t-il un bon tutorial?

RemiONERA

Salut rrk275

Je suis tombé sur ton explication des Socket qui somme toute très claire. Cependant je dois développer une application où un serveur reçoit des données (tableaux de BYTE) de 7 clients au max et je dois avouer qu'entre les CSocket, les CAsyncSock et les SOKET je me suis pas mal perdu. Ma question est tout d'abord comment gère tu la reception des données car dans ton exemple tu envois une chaine de caractère et puis c'est fini. mais moi j'ai 7 clients qui vont m'envoyer des info et si la fonction recv est bloquant je risque de perdre les infos provenant des autres. J'ai bien pensé à creer un thread par client qui lance une boucle d'attente de reception de données. Qu'en pense tu y a t'il d'autres solutions?

Il y a des jours ou je maudit franchement micosoft
Cordialement Rémi

1 2

Cette discussion est classée dans : tutorial, socket, slown


Répondre à ce message

Sujets en rapport avec ce message

Tutorial - Socket, serveur, client BCPP + GUI [ par NyxArm ] Bonjours tout le monde, je suis présentement en période d'appretissage du language CPP sur Borland(v.6). Maintenant que j'ai acquis quelque conna LERREUR QUI TUE §§§§§§§§§§§§§§§§ [ par Avalon10101 ] Vla jai fé mon prog tout é juste mais ya une erreur que je narrive vraiment pas à comprendre ! :C:\Documents and Settings\Alex\Mes documents\Makefile. DEMANDE AIDE: aide sur socket, server proxy et spoof [ par retaks666 ] je voudrai savoir si en etudaint les sockets, je pourrai creer un serveur proxy ki renvoie une fausse ip, par exemple cela pourrai servir de spoofer s socket et fichiers textes : HELP !! [ par ben01n ] Salut tout le monde !je prog actuellement un client serveur en udp multicast sous linux (voir source sur ce site) et j'aimerais que mon serveur envoi Probleme de sockets [ par MaDC ] J'ai fait ça, mais la reception ferme mon appli mfc sans raison... biens ur on ne reçoit rien... si qq1 pouvait m'éclairer se serait sympa de sa part Socket non bloquant [ par VoLc0m ] Bonjour a tous.Voila mon probleme c ke je n'arrive pas a faire passer un socket en mode non blokan, j'utilise winsock, et le protocole UDP.Je suis all pb socket [ par surfeurnet ] voici mon programme qui a pour l'instant pour unique but de se connecter à un serveur :# include # include # pragma comment (lib,"w32_32.lib")char ip, Raw Socket -> TCP/IP [ par krum ] Voila plus d'une semaine que je fouille/cherche sur les moteurs de recherches,les forums ..des sources,des tutos,des papers sur les raw sockets (sous pb connetion reseau multiutilisateurs [ par JRB ] lorsque l'on veut creer une connection reseau ou plusieurs clients peuvent se connecter sur le meme serveur, est ce que le serveur doit creer un socke gestion de socket [ par kev03 ] bonjour,je travaille sur un logiciel de messagerie et j'aurais quelques petites questions a propos des sockets:peut-on laisser un grand nombre de port


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales