Encore mon serveur

skysee Messages postés 29 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 28 septembre 2007 - 3 févr. 2002 à 15:23
cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 - 3 févr. 2002 à 21:15
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

cs_jpeg Messages postés 40 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 25 février 2004 1
3 févr. 2002 à 21:15
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...
0
Rejoignez-nous