Portage des sockets windows vers linux

Fermé
zorro - 9 déc. 2005 à 17:43
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 - 9 déc. 2005 à 19:59
Salut !
Je suis en train de porter un programme windows vers linux qui utilise les sockets et les threads. Le programme fonctionne sous windows mais pas avec linux.
voici mes erreurs suivies d'un bout de code :

socketClient.cpp:20: erreur: « sockaddr_in » ne nomme pas un type
socketClient.cpp:21: erreur: « SOCKADDR_IN » ne nomme pas un type
socketClient.cpp:23: erreur: « WSADATA » ne nomme pas un type
socketClient.cpp: In constructor `clientProgram::clientProgram()':
socketClient.cpp:41: erreur: « MAKEWORD » non déclaré (première utilisation dans cette f onction)
socketClient.cpp:41: erreur: (Chaque identificateur non déclaré est rapporté seulement u ne seule fois pour la fonction dans laquelle il apparaît.)
socketClient.cpp:41: erreur: « MyWsaData » non déclaré (première utilisation dans cette fonction)
socketClient.cpp:41: erreur: « WSAStartup » non déclaré (première utilisation dans cette fonction)
socketClient.cpp: In member function `void clientProgram::readFile()':
socketClient.cpp:61: erreur: « sockInfoServer » non déclaré (première utilisation dans c ette fonction)
socketClient.cpp: In member function `void clientProgram::specificationsServer()':
socketClient.cpp:82: erreur: « sockInfoServer » non déclaré (première utilisation dans c ette fonction)
socketClient.cpp:82: erreur: « inet_addr » non déclaré (première utilisation dans cette fonction)
socketClient.cpp:85: erreur: « htons » non déclaré (première utilisation dans cette fonc tion)
socketClient.cpp:90: erreur: « SOCKADDR » non déclaré (première utilisation dans cette f onction)
socketClient.cpp:90: erreur: expected primary-expression avant un élément lexical « ) »
socketClient.cpp: In member function `void clientProgram::specificationsClient()':
socketClient.cpp:98: erreur: « sockInfoClient » non déclaré (première utilisation dans c ette fonction)
socketClient.cpp:98: erreur: « inet_addr » non déclaré (première utilisation dans cette fonction)
socketClient.cpp:101: erreur: « htons » non déclaré (première utilisation dans cette fon ction)
socketClient.cpp: In member function `void clientProgram::clientConnections()':
socketClient.cpp:115: erreur: « closesocket » non déclaré (première utilisation dans cet te fonction)
socketClient.cpp:116: erreur: « WSACleanup » non déclaré (première utilisation dans cett e fonction)

//#include <winsock2.h>
#include <pi-socket.h>
#include <semaphore.h>
#include <pi-sockaddr.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <linux/socket.h>
#include <iostream.h>
#include <fstream.h>

//#pragma comment(lib, "ws2_32.lib")

#define bufferLength 5

class clientProgram
{
private :
int mySocketServer;//used to define the server's socket
int mySocketClient;//used to define the client's socket
sockaddr_in sockInfoClient ;
SOCKADDR_IN sockInfoServer ;//technical infos of the socket:
//(port, éventually ip adress
WSADATA MyWsaData; //used for WSAStartup in the constructor

Re: problème avec les sockets
par newbie20 le 09/12/2005

comme vous pouvez le voir, j'ai aussi quelques problèmes pour trouver les bons include et si WSADATA est propre a windows (si oui, quel est son "remplaçant" sous LINUX ?)
A voir également:

1 réponse

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
9 déc. 2005 à 19:59
salut,
WSADATA et MAKEWORD c'est du windows pur.

Exemple de code pour les sockets sous LINUX/UNIX:
http://ccazajus.free.fr/3DEV/03_USBMGR/SOURCE/INET__index.php
syssock.h : le fichier include
daemon.c : permet de faire un démon propre pour écrire un service tcp
serv_tcp_simple.c : regroupe les appels socket pour devenir un serveur
serv_connect.c : permet de connecter un client tcp
sock_read.c & sock_write.c : code proprement des lectures de messages de
taille connu pour les socket.
Ensuite,
http://ccazajus.free.fr/3DEV/03_USBMGR/SOURCE/USB_MGR__index.php
Qui utilise cette bibliohtèque pour implémenter un serveur socket tcp, puis
http://ccazajus.free.fr/3DEV/03_USBMGR/SOURCE/USB_LISTE_main_c.php
pour un exemple de client.
C'est pas du C++, mais c'est adaptable.
0