IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

[Winsock] Création de Socket, fonction accept


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Par défaut [Winsock] Création de Socket, fonction accept
    Bonjour,

    j'ai besoin de créer un socket, je pensais avoir fait tout bien comme il faut mais je suis face à une erreur :
    Impossible de convertir le paramètre 3 de 'unsigned int' en 'in *'
    Je ne comprend pas... Voici l'aide que j'ai utilisé http://c.developpez.com/WalrusSock/. Là où se situe mon erreur je n'ai rien trouvé de différent ailleurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include "stdafx.h"
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	WSADATA WSAData;
    	WSAStartup(MAKEWORD(2,0), &WSAData);
    	
    	SOCKET sock;
    	struct sockaddr_in sin;
    	sin.sin_addr.s_addr	= inet_addr("127.0.0.1");
    	sin.sin_family		= AF_INET;
    	sin.sin_port		= htons(4148);
    	sock = socket(AF_INET,SOCK_STREAM,0);
    	bind(sock, (struct sockaddr *)&sin, sizeof(sin));
    	listen(sock, 0);
    	int val = 0;
    	while(1)
    	{
    		val = accept(sock, (SOCKADDR *)&sin, sizeof(sin));
    		if(val != INVALID_SOCKET)
    		{
    			printf("INVALID SOCKET");
    		}
    	}
    
    	return 0;
    }

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Le problème est sur le troisième argument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          int i_size =sizeof(sin);
          val = accept(sock, (SOCKADDR *)&sin, &i_size);

  3. #3
    Membre averti
    Inscrit en
    Novembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 31
    Par défaut
    Merci ! C'était bien ça. Ca me semble (presque) évident maintenant .

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    D'ailleurs... tu as un bug...
    Rien ne te dis que le sockaddr retourné est un sockaddr_in (sur ma bécane qui n'a que de l'IP6 par exemple, ca ne le sera pas)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. socket SOCK_RAW fonction accept() nonbloquante ?
    Par Luke spywoker dans le forum Réseau
    Réponses: 1
    Dernier message: 09/05/2013, 09h48
  2. sockets : warning sur la fonction accept()
    Par bit_o dans le forum Réseau
    Réponses: 8
    Dernier message: 20/05/2007, 13h35
  3. Problème avec les sockets et la fonction accept
    Par projeticq dans le forum Réseau
    Réponses: 6
    Dernier message: 13/04/2007, 11h37
  4. Réponses: 14
    Dernier message: 09/04/2004, 13h44
  5. Gestion de sockets: fonction Accept
    Par keupon dans le forum MFC
    Réponses: 12
    Dernier message: 22/01/2004, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo