Probleme création socket en c

Résolu/Fermé
Utilisateur anonyme - 26 oct. 2009 à 16:01
 Utilisateur anonyme - 29 oct. 2009 à 13:13
Bonjour,
Pour commencer voila mon code :

/******************************************
#include <stdlib.h>
#include <winsock2.h>
#include <string.h>
#define PORT 5000 // Port arbitraire de communication
int main()
{
SOCKET s;
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s==INVALID_SOCKET)
{
printf("ERREUR SOCKET\n");
exit(1) ;
}


struct sockaddr_in sain;
sain.sin_family = AF_INET;
sain.sin_port = htons(PORT);
sain.sin_addr.s_addr = INADDR_ANY;
if(bind(s, (struct sockaddr *) &sain, sizeof(struct sockaddr_in)) == SOCKET_ERROR)
{
printf("erreur bind\n");
exit(1) ;
}


if (listen(s, 1)==SOCKET_ERROR)
{
printf("ERREUR LISTEN \n");
system("PAUSE") ;
exit(1) ;
}

printf("En attente de connection.\n");


SOCKET ns;
struct sockaddr_in fsain;
int fromlen = sizeof(struct sockaddr_in);
ns = accept(s,(struct sockaddr *) &fsain, &fromlen);

if(ns==SOCKET_ERROR)
{
printf("erreur d'acceptation\n");
system("PAUSE") ;
exit(1) ;
}

printf("connexion etablie\n");


char buffer[64];
int rec;

do
{
rec = recv(ns,buffer,64*sizeof(char),0);
buffer[rec] = '\0' ;
memset(buffer, 0, 64*sizeof(char));

}while(rec>0);

printf("connexion fermee par le client\n");

if(closesocket(s)==SOCKET_ERROR)
{
printf("erreur fermeture socket \n");
system("PAUSE") ;
exit(8) ;
}
}
****************************************/

donc mon erreur est là :

SOCKET s;
s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

s retourne toujours "INVALID_SOCKET", ce qui m'arrange pas. (meme probleme avec s = socket(AF_INET,SOCK_STREAM,0);

fin en gros voila, je suis sous vista (_ _') et j'utilise code::blocks. Je comprends pas trop pourquoi ca veut pas créer de socket, y a un service a lancer dans vista ou un autre truc qui m'échappe ?

merci d'avance pour vos réponses !

PS : j'ai pas le net chez moi donc il se peut que je ne réponde pas rapidement à des réponses.
A voir également:

2 réponses

Utilisateur anonyme
29 oct. 2009 à 10:47
oy je me permet un petit up car c'est tout de meme important pour moi

j'ai testé avec dev c++ aussi et sous xp, meme probleme, le socket ne veut pas se créer _ _'

ca me soule un peu je comprend pas d'ou vient le probleme, donc si quelqu'un pourrait m'aider ca serai sympas.
0
Bonjour,

Je ne suis pas certain à 100% que ca vienne de là ;
Mais ca me semble étrange que tu ne fasse pas l'étape d' "initialisation" de Winsock.

Je cite : "Before calling any winsock function, you need to initialize the winsock library. This is done with WSAStartup."

... Je pense que celà pourrait résoudre ton problème.

Merci de nous tenir au courant.
Cordialement,
Marc
0
Utilisateur anonyme
29 oct. 2009 à 13:13
a charge de revanche !!!!
merci beaucoup tu me décoince d'un truc con qui m'aurait prit la tete pendant longtemps ! (j'aurai pas pensé à ca XD)

c'est con mais j'ai trop l'habitude d'utiliser builder qui le fait tout seul ...

merci beaucoup :)
0