Portage des sockets windows vers linux

zorro -  
crabs Messages postés 909 Statut Membre -
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 ?)

1 réponse

  1. crabs Messages postés 909 Statut Membre 507
     
    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