ben83510
Messages postés5Date d'inscriptiondimanche 17 janvier 2010StatutMembreDernière intervention20 janvier 2010
-
17 janv. 2010 à 18:03
ben83510
Messages postés5Date d'inscriptiondimanche 17 janvier 2010StatutMembreDernière intervention20 janvier 2010
-
20 janv. 2010 à 17:34
Bonjour,
Je me suis lancer dans le tutoriel sur les socket.
J arrive a effectuer la connexion lorsque j execute le serveur et le client sur mon pc.Mais lorsque j essaye de lancer mon client sur le pc de mon pere (qui est en reseau avec le mien),la connexion ne s effectue pas!
(Je precise que suis sous xp et le pc de mon pere est sous vista )
Voici mon code :
Serveur:
Code : C
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#define PORT 23
typedef int socklen_t;
int main(void)
{
WSADATA WSAData;
int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
/* Socket et contexte d'adressage du serveur */
SOCKADDR_IN sin;
SOCKET sock;
socklen_t recsize = sizeof(sin);
/* Socket et contexte d'adressage du client */
SOCKADDR_IN csin;
SOCKET csock;
socklen_t crecsize = sizeof(csin);
int sock_err;
if(!erreur)
{
/* Création d'une socket */
sock = socket(AF_INET, SOCK_STREAM, 0);
/* Si la socket est valide */
if(sock != INVALID_SOCKET)
{
printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock);
/* Si la socket fonctionne */
if(sock_err != SOCKET_ERROR)
{
/* Démarrage du listage (mode server) */
sock_err = listen(sock, 5);
printf("Listage du port %d...\n", PORT);
/* Si la socket fonctionne */
if(sock_err != SOCKET_ERROR)
{
/* Attente pendant laquelle le client se connecte */
printf("Patientez pendant que le client se connecte sur le port %d...\n", PORT);
csock = accept(sock, (SOCKADDR*)&csin, &crecsize);
printf("Un client se connecte avec la socket %d de %s:%d\n", csock, inet_ntoa(csin.sin_addr), htons(csin.sin_port));
}
else
perror("listen");
}
else
perror("bind");
/* Fermeture de la socket client et de la socket serveur */
printf("Fermeture de la socket client\n");
closesocket(csock);
printf("Fermeture de la socket serveur\n");
closesocket(sock);
printf("Fermeture du serveur terminée\n");
}
else
perror("socket");
ben83510
Messages postés5Date d'inscriptiondimanche 17 janvier 2010StatutMembreDernière intervention20 janvier 2010 18 janv. 2010 à 14:19
Merci!!
C etait bien ca !!
Mais il y a un truc que je comprend pas,
si je veut faire un programme qui passe par le net,faudra t il que je précise mon adresse ip dans le client pour me connecter??
fregolo52
Messages postés1115Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20213 18 janv. 2010 à 15:23
Pas tout a fait !
Je connais mal, il faudrait demander à une personne qui connait un peu l'administration réseau, mais :
il faut que tu indique l'IP de ta box et après dans ton réseau local, tu dois configurer le routage. Par exemple, dire au routeur qu'il doit forwarder les infos venant du port 8000 vers l'IP 192.168.0.2