Encore mon serveur

Signaler
Messages postés
29
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
28 septembre 2007
-
Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004
-
bonjour,
je suis toujours avec mon serveur en c sous visual c++ sous windows(sis eulement j'avais linux).
Le problème est que je n'ai pas d'erreur de compilation ni de construction, mais impossible de creer la socket, cette derniere est toujours égale à l'erreur.
voici le prog:
#include <winsock2.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include "serveur.h"

#define port 15300

void main()
{
char car = 'f';
printf("%x", car);
}

void serveur()
{
int socketserveur = 0;
int Appelantlen;int i=0;
struct sockaddr_in localaddr ;
char buf[255];
int nbcar = 0;

localaddr.sin_family = AF_INET; /* Protocole internet */
localaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Toutes les adresses IP de la station */
localaddr.sin_port = htons(port); /* port d'écoute par défaut au dessus des ports réservés */

socketserveur = socket(AF_INET, SOCK_STREAM, 0);

if(socketserveur == INVALID_SOCKET)
{
perror("socket");exit(3);
}

if (bind(socketserveur,(struct sockaddr*)&localaddr,sizeof(localaddr) ) == SOCKET_ERROR)
{
printf("erreur bind\n");
exit(1);
}

if (listen(socketserveur,10) == SOCKET_ERROR)
{
printf("erreur listen\n");
exit(2);
}

Appelantlen = sizeof(localaddr);
accept(socketserveur,(struct sockaddr*)&localaddr, &Appelantlen);

nbcar = recv(socketserveur, buf, 255,0);

if(buf[0] == '$' && buf[1] == 'A')
{
for(i = 0; i < nbcar; i++)
{
printf("%c", buf[i+2]);
}
}

shutdown(socketserveur,0);

}

1 réponse

Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004

Au contraire de Linux, tu dois faire qques initialisations pour pouvoir utiliser les sockets sous Windows.
Voici ce que je fais d'habitude

//Initialisation de la Dll WinSock
WSADATA wsaData;
WORD wVersionRequested;
wVersionRequested = MAKEWORD( 2, 2 );
WSAStartup( wVersionRequested, &wsaData );

Et à la fin du prog, pour que tout soit propre, il faut faire :

//Liberation Dll WinSock
WSACleanup( );

Voilà ! j'espère que ça pourra t'aider...