Rechercher : dans
Par :

Portage des sockets windows vers linux

Dernière réponse le 9 déc 2005 à 19:59:02 zorro, le 9 déc 2005 à 17:43:08 
 Signaler ce message aux modérateurs

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 ?)

Meilleures réponses pour « portage des sockets windows vers linux » dans :
Faire fonctionner une application Windows sous Linux avec Wine VoirWine est un logiciel permettant de faire fonctionner certaines applications Windows sous Linux. Contrairement à VMWare ou VirtualBox, Wine n'émule pas un PC complet, mais seulement les API Win32 (appels système Windows). L'émulation n'est pas...
Liste des ports ouverts VoirQue vous soyez sous Windows ou Linux/Unix, la commande suivante (en console) permet d'afficher la liste des ports ouverts sur votre ordinateur :netstat -a Pour des outils graphiques plus poussés, voir Quels sont les ports ouverts sur ma machine
Télécharger Wine VoirWine est un logiciel capable d'émuler un environnement et d'exécuter des applications Windows sur Linux et les autres systèmes d'exploitation compatibles POSIX. Les programmes Windows fonctionnent sur linux avec Wine en natif et agissent comme les...

1

 crabs, le 9 déc 2005 à 19:59:02

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.ph­p
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. ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs
Collection CommentÇaMarche.net