Débutant Socket

Signaler
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010
-
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010
-
Salut à tous
je suis débutant en sockets langage C et j'ai parcouru plusieurs tutos y compris ceux qui se trouve dans ce site mais quand je copie le code sourde dans mon IDE j'ai toujours les mêmes erreurs de compilation .
J'utilise CodeBlock sous windows xp.
Est ce quelqu'un n'aurait pas un programme clair qu'il a pu compilé aisément pour que je puisse comprendre??
Merci d'avance pour vos réponses

7 réponses

Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
salut,

tu es débutant en socket ou débutant tout court ?
Les tuto sont assez court généralement, donc je ne vois qu'un problème de config de ton codeblocks.
Mais ca va etre dur de t'aider sans avoir les erreurs.
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010

Je suis débutant en socket mais je maîtrise le C
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
tu peux nous mettre ton code qui génère l'erreur de compile et l'erreur elle-meme ?
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010

#if defined (WIN32)
#include <winsock2.h>
typedef int socklen_t;
#elif defined (linux)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include
#include
#define INVALID_SOCKET -1
#define SOCKET_ERROR -1
#define closesocket(s) close(s)
typedef int SOCKET;
typedef struct sockaddr_in SOCKADDR_IN;
typedef struct sockaddr SOCKADDR;
#endif

#include <stdio.h>
#include <stdlib.h>
#define PORT 23



int main(void)
{
#if defined (WIN32)
WSADATA WSAData;
int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
#else
int erreur = 0;
#endif

SOCKET sock;
SOCKADDR_IN sin;

if(!erreur)
{
/* Création de la socket */
sock = socket(AF_INET, SOCK_STREAM, 0);

/* Configuration de la connexion */
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family = AF_INET;
sin.sin_port = htons(PORT);

/* Si le client arrive à se connecté */
if(connect(sock, (SOCKADDR*)&sin, sizeof(sin)) != SOCKET_ERROR)
printf("Connexion à %s sur le port %d\n", inet_ntoa(sin.sin_addr), htons(sin.sin_port));
else
printf("Impossible de se connecter\n");

/* On ferme la socket précédemment ouverte */
closesocket(sock);

#if defined (WIN32)
WSACleanup();
#endif
}

return EXIT_SUCCESS;
}

Les erreurs générées sont 9:
undefined reference to _socket@12
undefined reference to _WSAStartup@8
................... to _inet_addr@4
................... to htons@64
Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
Ah ok, ce sont donc des erreurs de link.
Tu as surement oublié de mettre une dépendance sur la lib réseau : ws2_32.lib.
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010

Tu peux mieux m'indiquer comment est ce que je dois m'y prendre car je suis toujours perdu :)
Messages postés
5
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
23 avril 2010

Merci bcp fregolo52 pour tes orientations t'avais vu juste g pu le faire
Maintenant je voudrais faire un programme qui envoie des messages d'erreur à l'administrateur en cas d'erreur tu pourrais m'aider ds ce sens ??