Rechercher : dans
Par :

Traduction server de linux vers windows

Dernière réponse le 22 aoû 2004 à 16:25:40 MLT, le 25 déc 2003 à 19:16:52 
 Signaler ce message aux modérateurs

Bonjour,

D'abord je mets le code, on verra les question plus tard !

fichier client.c :

#include "inet.h"

int main(int argc, char **argv){
  int i;
  int sockfd;
  char *ip_dest, *port_dest;
  struct sockaddr_in serv_addr, cli_addr;

  // verification des parametres
  cliParam(argc, argv, &ip_dest, &port_dest);
  
  // pour faire beau !
  printf("Connexion a %s:%s\n", ip_dest, port_dest);

  // initialisation des variables de connexion
  //  bzero((char *)&serv_addr, sizeof(serv_addr));
  ZeroMemory(&serv_addr, sizeof(serv_addr));
  serv_addr.sin_family      = AF_INET;
  serv_addr.sin_addr.s_addr = inet_addr(ip_dest);
  serv_addr.sin_port        = htons(atoi(port_dest));
  
  //  bzero((char *)&cli_addr, sizeof(cli_addr));
  ZeroMemory(&cli_addr, sizeof(cli_addr));
  cli_addr.sin_family      = AF_INET;
  cli_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  cli_addr.sin_port        = htons(0);
  
  // creation de la socket UDP
  if ((sockfd=socket(AF_INET, SOCK_DGRAM, 0)) < 0){
    perror("Impossible de creer la socket UDP");
    exit(1);
  }
  
#ifdef DEBUG
  printf("\n");
  printf("attachement de la socket au client :\n");
  printf("adresse : %d\n", cli_addr.sin_addr.s_addr);
  printf("port : %d\n", cli_addr.sin_port);
#endif
  
  // attachement de la socket
  if (bind(sockfd, (struct sockaddr *)&cli_addr, sizeof(cli_addr)) < 0){
    perror("Impossible d'attacher la socket UDP a l'adresse locale");
    exit(1);
  }

  // lancement du shell virtuel !
  shell(sockfd, (struct sockaddr *)&serv_addr);

  // fermeture de la socket
  //close(sockfd);
  closesocket(sockfd);

  return 0;
}


fichier inet.h :
#ifndef INET_H
#define INET_H

#include <stdio.h>
#include <sys/types.h>

//#include <sys/socket.h>
//#include <netinet/in.h>
//#include <arpa/inet.h>

#include <winsock2.h>

/*
  definition des constantes
*/

#define MAXMSG 100


/*
  definition des messages
*/

#define MSGOK     "ok;"
#define MSGNOTOK  "not_ok;"
#define MSGINIT   "init;"
#define MSGINITOK "init_ok;"
#define MSGQUIT   "quit;"


/*
  definitions des types utilises
*/

typedef enum {false, true} boolean;



/*
  prototypes des fonctions
*/

extern void cliParam(int nbParam, char **params, char **ip_dest, char **port_dest);
//extern void readLine(char **ligne);
extern void shell(int sockfd, struct sockaddr *serv_addr);

extern void servParam(int nbParam, char **params, char **port_src, char **ip_dest, char **port_dest);
extern void relai(int sock_in, int sock_out, struct sockaddr *cli_addr, struct sockaddr *serv_addr);
extern void final(int sock_in, struct sockaddr *cli_addr);

#endif





Mon fichier "inet.h" est inclu par tous les sources.
J'ai fabriqué ce client qui utilise le protocole UDP sous linux, tout marche comme prevu !
Maintenant, je souhaite qu'il fonctionne sous windows...

J'ai donc instalé le compilateur lcc-win32 (sans probleme) et j'ai lu la doc de l'api. J'ai du changer quelques fonctions pour la compatibilite (bzero ==> ZeroMemory ...).

Le probleme est le suivant, lorsque je veux compiler, j'obtient l'erreur suivante :

lcclnk client.obj cliParam.obj shell.obj -o client.exe
client.obj .text: undefined reference to '_inet_addr@4'
client.obj .text: undefined reference to '_htons@4'
client.obj .text: undefined reference to '_htonl@4'
client.obj .text: undefined reference to '_socket@12'
client.obj .text: undefined reference to '_bind@12'
client.obj .text: undefined reference to '_closesocket@4'
shell.obj .text: undefined reference to '_sendto@24'
shell.obj .text: undefined reference to '_recvfrom@24'
make: Error code 9
make: 'client.exe' removed.


J'ai verifie, ws2_32.lib est presente, au bon endroit et contient les smboles manquants !!!

Alors je cherche une bonne ame pour me guider sur la piste du bonheur.

Merci

Meilleures réponses pour « traduction server de linux vers windows » dans :
Serveur X sous Windows VoirIl est possible d'installer un serveur X sous Windows afin d'utiliser les applications X-Windows (Gnome, KDE, etc.) sous Windows (par exemple à travers une connexion ssh). La méthode suivante n'utilise pas Cygwin. Dans l'exemple ci-dessous,...
[Réseaux] Installation d'un serveur ssh sous Windows VoirCet article va vous expliquer comment installer et configurer un serveur ssh sous Windows. Sommaire Introduction Choix du logiciel OS nécessaire Outils utilisés Avant de commencer Note importante Note de l'auteur (sebsauvage) I -...
[Web] Un minuscule serveur web sous Windows VoirLe plus petit serveur web sous Windows: 28 ko ! C'est TinyWeb. Malgré sa petite taille, il fonctionne très bien et il est très rapide. Avantages: Pas d'installation nécessaire (un seul fichier) Ultra-compact (59 ko seulement ! Compacté...
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...
Télécharger Ext2 Installable File System VoirVous pouvez installer deux systèmes d'exploitations différentes sur votre ordinateur. Par exemple Windows et Linux. Mais le problème c'est qu'il n'est pas toujours possible d'avoir accès au document Linux via Windows. Ext2 Installable File System for...
Configuration d'un serveur d'un réseau TCP/IP sous Linux VoirIntroduction Dans cette partie , nous allons décrire toutes les étapes nécessaires pour configurer votre réseau TCP/IP sur votre serveur. Tout d'abord, nous verrons les types d'adressage IP, ensuite, nous configurerons vos interfaces réseaux et...
Installer un serveur VPN sous Windows XP VoirIntérêt d'un VPN La mise en place d'un réseau privé virtuel permet de connecter de façon sécurisée des ordinateurs distants au travers d'une liaison non fiable (Internet), comme s'ils étaient sur le même réseau local. Ce procédé est utilisé par de...
Mise en place de Samba sous Linux VoirIntroduction Un des principaux intérêts des réseaux est la possibilité de partager des fichiers. Il existe des protocoles (notamment le FTP, File Transfert Protocol) permettant de transférer des fichiers à l'aide de commandes à travers un réseau...

1

MLT, le 26 déc 2003 à 19:38:47

En fait je pense quele probleme vient du fait que je n'utilise aucune fonction WSA.... car je n'ai toujours pas compris ce qu'elles font ni pourquoi les utiliser

@++

Répondre à MLT

2

MLT, le 27 déc 2003 à 20:57:27

Au secours, personne ne sais donc programmer avec des sockets sous windows ? :'-(

@++

Répondre à MLT

3

Bubonik, le 22 aoû 2004 à 16:08:39

J'ai le même problème avec la même bibliothèque (winsock2.h) avec Dev c++.
Si je trouve une solution, je te la donnerai (mais comme je débute, c'est peu porbable).

Répondre à Bubonik

4

 Bubonik, le 22 aoû 2004 à 16:25:40

Je crois avoir trouvé la réponse sur
http://www.cppfrance.com/forum.v2.aspx?ID=166140

En tout cas, chez moi ça a marché. Mais peut-être que cette solution est spécifique à Dev_c++.
Essaie tout de même, pour voir.

Répondre à Bubonik
Collection CommentÇaMarche.net