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

VC++ .NET Discussion :

Probleme de compilation socket


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut Probleme de compilation socket
    Bonjour

    Voila je fais des essais sur les sockets c++ mais pour l'instant j'ai pas réussi a compiler j'ai ces erreurs.

    1>c:\projet\client\client\client.cpp(21): error C3861: 'htons'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(24): error C3861: 'bind'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(25): error C3861: 'listen'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(29): error C2440: '='*: impossible de convertir de 'SOCKET (__stdcall *)(SOCKET,sockaddr *,int *)' en 'SOCKET'
    1>c:\projet\client\client\client.cpp(29): error C2440: '='*: impossible de convertir de 'SOCKET (__stdcall *)(SOCKET,sockaddr *,int *)' en 'SOCKET'
    1> Aucun contexte dans lequel cette conversion est possible
    1>c:\projet\client\client\client.cpp(29): error C3861: 'accept'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(37): error C3861: 'send'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(50): error C3861: 'closesocket'*: identificateur introuvable
    1>c:\projet\client\client\client.cpp(52): error C3861: 'WSACleanup'*: identificateur introuvable
    1>
    1>ÉCHEC de la build.
    1>
    1>Temps écoulé 00:00:05.85
    Je pensais que c'etai ma bibliothèque qui étais pas linker mais apparemment
    cette ligne le fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "ws2_32.lib")
    client.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <windows.h>
    #include <winsock2.h>
    #include <iostream>
    #pragma comment(lib, "ws2_32.lib")
    #define port 5169
    using namespace std;
    SOCKET sock;
    SOCKET csock;
    client.cpp
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include "Client.h"
     
    int main()
    {
    	//initialisation de la variable WSADATA
    	WSADATA WSAData;
    	SOCKADDR_IN sin;
    	SOCKADDR_IN csin;
    	char buffer[50];
     
    	do
    	{
     
    		if (WSAStartup(MAKEWORD(2,0), &WSAData)!=0)
    			cout << "CLIENT: Impossible d'initialiser Winsock";
    		else
    		{
    			sock = socket(AF_INET, SOCK_STREAM, 0);
    			sin.sin_addr.s_addr			= htonl(INADDR_ANY);    //adresse du server
    			sin.sin_family				= AF_INET;
    			sin.sin_port				= htons(port);
     
     
    			bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    			listen(sock, 8);
    			int sinsize = sizeof(csin);
     
     
    					 if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)       //si le serveur est connecter
    					{
    						cout << "CLIENT: connexion reussi \n";
    					}
    					else
    						{
    						   cout << "CLIENT: connexion echouer\n";
    						}
     
     
    			closesocket(sock);
    			//closesocket(csock);
    			WSACleanup();
    		}
    	}
    	while(1);
    	return 0;
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Je pensais que c'etai ma bibliothèque qui étais pas linker mais apparemment
    Sous Windows, avec Visual C++. Les erreurs sont de type Cxxxx, donc ce sont des erreurs de compilation. Les erreurs de link sont de type Lxxxx.

    Avec ton code, j'ai plein d'erreur de redefinition, alors que toi, tu as des erreurs de non definition !!!

    Dans ton .h, il faut inverse windows.h et winsock2.h.

    Si tu as mis toutes les erreurs, il y a un truc qui m'interpelle !!!!
    WSADATA serait bien défini alors que tout le reste (de winsock2) ne le serait pas.

    Tu compiles avec quoi (version)?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Utilisez l'option /P du compilateur (http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx).

    Cela permet d'avoir le code après expansion des .h.
    Cela permet de voir pourquoi une définition n'est pas utilisée, si c'est le bon .h qui est utilisé et voir les constantes de compilations foireuses.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 220
    Points : 48
    Points
    48
    Par défaut
    Si tu as mis toutes les erreurs, il y a un truc qui m'interpelle !!!!
    WSADATA serait bien défini alors que tout le reste (de winsock2) ne le serait pas.
    Non je n'ai pas mis toutes les erreurs, WSDATA n'etai pas défini.
    Il fallait bien inverser windows.h et winsock2.h.

    Je compile avec visual studio 2010.

    Merci pour l'aide.

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

Discussions similaires

  1. probleme de compilation d'un client (socket)
    Par adel25 dans le forum Réseau
    Réponses: 1
    Dernier message: 24/10/2014, 09h29
  2. probleme de compilation sous Unix " socket.h"
    Par skilipa123 dans le forum Linux
    Réponses: 1
    Dernier message: 28/11/2007, 21h28
  3. Probleme de Compilation de la STL
    Par stoluup dans le forum MFC
    Réponses: 3
    Dernier message: 05/05/2004, 17h25
  4. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/12/2003, 20h32
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43

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