Connect et Errno se contredisent !

Connect et Errno se contredisent ! - C++ - Programmation

Marsh Posté le 29-03-2005 à 09:11:56    

bonjour,
 
Sous environnement XP Pro, pour faire un embryon de serveur.. (je fais mes premiers pas) :
 
Sous Dev-C++, en voulant créer un socket (débutant), connect me renvoie -1 donc problème.
 
Je teste errno qui lui me renvoie 0 : pas de problème !!!
 
 
Et ca ne fonctionne pas...
 
 
Quelqu'un a une idée ?
 
Merci

Reply

Marsh Posté le 29-03-2005 à 09:11:56   

Reply

Marsh Posté le 29-03-2005 à 09:15:03    

salut,
peux-tu poster ton code stp ?

Reply

Marsh Posté le 29-03-2005 à 09:36:05    

J'allais justement le faire ! ;-)
Attention c'est du B-A BA, ca fait longtemps que je n'ai plus programmé alors j'y vais par petites touches.
 
#include <iostream>
#include <process.h>
#include <stdlib.h>
#include <errno.h>
 
#include <winsock2.h>
 
int main (int argc, char *argv[])
{  
  WSADATA WSAData;
  WSAStartup(MAKEWORD(2,0), &WSAData);
  SOCKET sock;
  SOCKET csock;
  SOCKADDR_IN sin;
  int i=22;
  char buffer [20];
  int Erreur;
 
  sock = socket(AF_INET, SOCK_STREAM, 0);
   
  CodeErreur(errno);
   
  sin.sin_addr.s_addr   = inet_addr("1999.12.261.1" );
  //sin.sin_addr.s_addr   = htonl(INADDR_ANY );
  sin.sin_family    = AF_INET;
//  sin.sin_port    = htons(3490);
  sin.sin_port    = htons(0);
  //bind(sock, (SOCKADDR *)&sin, sizeof(sin));
 
  memset(&(sin.sin_zero), '\0', 8);  
   
  if (connect(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR )
  {
    CodeErreur(errno);
  }
et... (la suite n'est pas importante).
 
 
CodeErreur affiche simplement le message correspondant au code de l'erreur.
L'adresse IP est volontairement du n'importe quoi : errno renvoie quand même 0 !
Avec une IP correcte etc.. ca ne fonctionne pas et toujours 0 pour errno.
 
Merci !

Reply

Marsh Posté le 29-03-2005 à 11:16:32    

Ca marche !!
En utilisant SOCK_DGRAM qui ne demande pas un socket demandeur (serveur).
 
Ca n'explique pas pourquoi je n'ai pas de code d'erreur avec errno.. Ou alors ce n'est pas prévu..

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed