Accueil > Forum > > > > les sockets seulement en réseau ?
les sockets seulement en réseau ?
mercredi 7 juillet 2004 à 18:10:03 |
les sockets seulement en réseau ?

Gabi
|
Bon, avant selon moi, les sockets pouvaient être utilisés par internet. Rien de plus logiques. Mais là j'ai programmé un squelette de chat avec les sockets et selon mes tests ca ne serait pas vrai. En effet, la connexion entre mon server et mon client ne se fait qu'avec une adresse ip locale. Par contre, ça m'étonne beaucoup. Je voudrais donc le savoir une fois pour toute. Est-ce que winsock sert seulement à faire des connexions en réseau ?
|
|
mercredi 7 juillet 2004 à 18:43:08 |
Re : les sockets seulement en réseau ?

aardman
|
Salut, Les sockets ne servent qu'a ca, etablir des connexions en reseau et "par internet".
|
|
mercredi 7 juillet 2004 à 19:42:51 |
Re : les sockets seulement en réseau ?

racpp
|
salut , Les sockets peuvent fonctionner sur un même ordinateur ayant une seule et unique adresse IP. Mais il me semble qu'ils fonctionnent beaucoup mieux sur un réseau local ou internet. Je m'explique : Pour faire les premiers essais sur une application client/serveur, j'étais obligé de tester les 2 programmes sur un même ordinateur (celui utilisé pour la programmation en vc++). Au début, ça marchait parfaitement bien. Mais au fur et à mesure que le programme se compliquait, je commencais à avoir quelques problèmes de connexion. J'ai failli laisser tomber ce projet car je n'ai pas réussi à trouver la solution. Mais, quand je l'ai testé sur un vrai réseau local, j'ai eu la belle surprise de voir que tout fonctionnait merveilleusement bien. Puisque le but final est atteint, je n'ai pas cherché à comprendre pourquoi ça ne marchait pas aussi bien avec une seule adresse IP. A++
|
|
mercredi 7 juillet 2004 à 22:18:48 |
Re : les sockets seulement en réseau ?

Gabi
|
Merci pour vos réponses. Elles sont appréciées. Mais laissez moi spécifier ce que je voulais dire. C'est justement que tout marche quand je teste sur ma machine, et plus rien ne marche quand je pars dune autre machine. Je recoit une erreur 10061, cest a dire connection refused. Donc, c comme si mon server nexistait pas. Pourtant mon server ne me fait aucune erreur. Pouvez vous méclairer ?
|
|
mercredi 7 juillet 2004 à 22:29:28 |
Re : les sockets seulement en réseau ?

Gabi
|
Au fait, si je fait le test je prend quelle adresse ip ? ou je la trouve ?
|
|
mercredi 7 juillet 2004 à 22:44:18 |
Re : les sockets seulement en réseau ?

aardman
|
Salut, Si tu teste avec un poste distant, il faut prendre l'ip internet du serveur. Pour trouver cette ip, la je peux pas vraiment t'aider, ca depend de la machine.
|
|
mercredi 7 juillet 2004 à 22:58:01 |
Re : les sockets seulement en réseau ?

Gabi
|
ok mais c parce que quand jessai, même avec un autre programme que je nai pas programmé et qui est censé fonctionner, ca ne marche pas.
|
|
jeudi 8 juillet 2004 à 01:16:13 |
Re : les sockets seulement en réseau ?

Gabi
|
Bon, pour vous simplifier la tâche au lieu de tourner en rond avec mes questions je vous propose mon code. Dites-moi ce qui cloche. Mon programme est compilé avec vc++. Et ne portez pas attenton aux commentaires, ils son utiles surtout pour moi :) Server : #include <iostream.h> #include <winsock.h> #include <string.h> #include <stdio.h>
#define NETWORK_ERROR -1 #define NETWORK_OK 0
void ReportError(int errorCode, const char *wichFunc) { char errorMsg[92]="\0";
sprintf(errorMsg,"Call to %s returned error %d",(char *)wichFunc,errorCode);
cout << errorMsg; }
int main() {
WORD SockVersion = MAKEWORD(1,1);
WSADATA wsaData;
int nret;
WSAStartup(SockVersion,&wsaData);
SOCKET ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(ListeningSocket==INVALID_SOCKET) { nret=WSAGetLastError(); ReportError(nret,"socket()");
WSACleanup(); //return NETWORK_ERROR;
}
SOCKADDR_IN ServerInfo;
ServerInfo.sin_family=AF_INET; ServerInfo.sin_addr.s_addr=INADDR_ANY; ServerInfo.sin_port=htons(80);
nret=bind(ListeningSocket,(LPSOCKADDR)&ServerInfo, sizeof(struct sockaddr));
if(nret==SOCKET_ERROR) { nret=WSAGetLastError(); ReportError(nret,"bind()");
WSACleanup(); //return NETWORK_ERROR; }
nret=listen(ListeningSocket, 10);
if(nret==SOCKET_ERROR) { nret=WSAGetLastError(); ReportError(nret,"listen()");
WSACleanup(); //return NETWORK_ERROR; }
SOCKET Client; Client=accept(ListeningSocket,NULL,NULL);
if(Client==INVALID_SOCKET) { nret=WSAGetLastError(); ReportError(nret,"accept()");
WSACleanup(); //return NETWORK_ERROR; }
char Buffer[256]="\0";
strcpy(Buffer,"Allo\0");
while(1) { nret=send(Client,Buffer,strlen(Buffer),0);
if(nret==SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "send()");
WSACleanup(); return NETWORK_ERROR; } }
cin >> Buffer;
closesocket(ListeningSocket); closesocket(Client);
WSACleanup(); return NETWORK_OK;
}
|
Client : #include <iostream.h> #include <winsock.h> #include <string.h> #include <stdio.h>
#define NETWORK_ERROR -1 #define NETWORK_OK 0
void ReportError(int errorCode, const char *wichFunc) { char errorMsg[92]="\0";
sprintf(errorMsg,"Call to %s returned error %d",(char *)wichFunc,errorCode);
cout << errorMsg; }
int main() {
WORD SockVersion = MAKEWORD(1,1);
WSADATA wsaData;
int nret;
WSAStartup(SockVersion,&wsaData);
SOCKET ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(ListeningSocket==INVALID_SOCKET) { nret=WSAGetLastError(); ReportError(nret,"socket()");
WSACleanup(); //return NETWORK_ERROR;
}
SOCKADDR_IN ServerInfo;
ServerInfo.sin_family=AF_INET; ServerInfo.sin_addr.s_addr=INADDR_ANY; ServerInfo.sin_port=htons(80);
nret=bind(ListeningSocket,(LPSOCKADDR)&ServerInfo, sizeof(struct sockaddr));
if(nret==SOCKET_ERROR) { nret=WSAGetLastError(); ReportError(nret,"bind()");
WSACleanup(); //return NETWORK_ERROR; }
nret=listen(ListeningSocket, 10);
if(nret==SOCKET_ERROR) { nret=WSAGetLastError(); ReportError(nret,"listen()");
WSACleanup(); //return NETWORK_ERROR; }
SOCKET Client; Client=accept(ListeningSocket,NULL,NULL);
if(Client==INVALID_SOCKET) { nret=WSAGetLastError(); ReportError(nret,"accept()");
WSACleanup(); //return NETWORK_ERROR; }
char Buffer[256]="\0";
strcpy(Buffer,"Allo\0");
while(1) { nret=send(Client,Buffer,strlen(Buffer),0);
if(nret==SOCKET_ERROR) { nret = WSAGetLastError(); ReportError(nret, "send()");
WSACleanup(); return NETWORK_ERROR; } }
cin >> Buffer;
closesocket(ListeningSocket); closesocket(Client);
WSACleanup(); return NETWORK_OK;
}
|
Merci beaucoup.
|
|
jeudi 8 juillet 2004 à 14:19:13 |
Re : les sockets seulement en réseau ?

roswell117
|
Dans ta partie client, ce passage est plutôt étrange : ServerInfo.sin_addr.s_addr=INADDR_ANY;
|
A cette endroit, tu dois définir l'adresse à laquelle le client doit se connecter. Tu dois donc spécifier une adresse IP valide. Si tu travailles sur un seul ordi, tu peux utiliser "127.0.0.1", si tu es sur un autre ordi, tu dois y mettre l'adresse IP de l'ordi faisant tourner le serveur.
|
|
jeudi 8 juillet 2004 à 17:30:49 |
Re : les sockets seulement en réseau ?

aardman
|
Salut, En théorie INADDR_ANY sert a spécifier toutes les adresses que possede la machine (local, internet). Le code du serveur a l'air bon, mais je n'ai pas pu le tester (derriere un routeur).
|
|
Cette discussion est classée dans : réseau, seulement, sockets
Répondre à ce message
Sujets en rapport avec ce message
tutorial réseau c++ [ par paisibleman ]
Bonjour ! Quelqu'un saurait il où je peux trouver un bon tutorial pour commencer la programation réseau en c++ ? Merci :)
aide RAW sockets [ par alien9900 ]
je veux une sur RAW Sockets;et merci;
Est-ce seulement moi ou il y a des sources dont on se passerait volontier [ par MeltedMind ]
Je me demande si je suis le seul débile à croire ça ou bien si il y a de nombreux sources qui laissent à désirer. Les calculatrices de XPand, Affiche
Segmenter un fichier en mémoire C (seulement) [ par golum ]
Voila pour ouvrir a partir de mon prog c un fichier de 20 Mo je met 1min et j'aimerais a tout pris diminuer ce temps.Est-il possible de segmenter le f
Sockets !!!! [ par Xs ]
salut !je cherche des tutoriaux sur internet pour savoir utiliser les sockets !en fait, c tou, juste une adresse pour des tuts sur les sockets (pour f
Reutiliser les sockets [ par Thaeron ]
Comment peut on faire pour utiliser une socket crée par un autre programme (comme le fait Winsock Packet Editor) ????
Récupérer Domaine/Workgroup des pc du réseau [ par jefy ]
JefyJ'utilise Builder6 et je cherche le moyen de récupérer les Domaines ou Workgroups du réseau (accessoirement les pc qui en font partie).merci d'ava
Aide Sockets Winsock [ par VoLc0m ]
voila mon pb :en C bien sur :) je dois, par socket, envoyer ca a une address (server counter strike) :The packet should start with 4 consecutive bytes
Executer un programme sur ordis en réseau [ par Sardinoman ]
BonjourCela me parait assez improbable mais je voudrai tout de meme savoir s'il est possible d'éxecuter un programme en fichiers partagés sur tous les
Aide pour les sockets [ par lukilou ]
Quelqu'un peut il m'indiquer comment je peux creer un socket à vocation serveur. Je voudrais aussi definir son port et son nom pour ne pas utiliser d'
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|