transfert de fichier texte avec des sockets

transfert de fichier texte avec des sockets - C++ - Programmation

Marsh Posté le 16-04-2005 à 15:43:47    

bonjour,
 
Je suis avec borland sous win xp.
 
Je doit recuperer les urls visitées d'un reseau sur un poste. Les urls sont enregistré dans un fichier txt.
Toutes les x minutes le programme sur un poste administrateur demande au poste client d'envoyer le fichier txt.
J'ai essayer de me servir des composants socket sous borland mais je ne vois nulle part ou rentrer l'adresse IP des machines. je discute sur le port 1200 mais comment affecter les adresses IP pour que les 2 machines discute entrent elles ?
 
d'avance je vous en remercie. :hello:

Reply

Marsh Posté le 16-04-2005 à 15:43:47   

Reply

Marsh Posté le 19-04-2005 à 00:23:12    

Je ne connais pas borland, mais aller au pif je dirrairs qu'il faut que du bind t'as socket,  
Oublie la notion de droit et d'administrateur a moins que tu veuilles creer un protocol hyper sofistiqué.
 
 
la notion qu'il faut garder en tete c'est la notion de CLIENT - SERVEUR
 
Je suppose que dans ton cas, TCP est recomandé, il te faut donc créer une socket de type STREAM
(DATAGRAM pour UDP)
 
ton serveur ecoute(listen) sur le port 1200.
ton client se connecte sur ce port.
ton serveur accepte la connection du client
Alors tes deux applications peuvent communiquer (recv et send)
 
 
Si tu utilises les mechanismes ANSI C sa te donne ca en pseudo C code.
 

Code :
  1. /* pour le serveur */
  2. struct sockaddr_in address = {AF_INET, 0.0.0.0, htons(1200)};
  3. socket listningSocket = socket(SOCK_STREAM);
  4. socket clientSocket;
  5. bind(listningSocket, address );
  6. listen(listningSocket)
  7. while(true)
  8. {
  9.   clientSocket = accept(listningSocket);
  10.   recv(clientSocket, buffer)
  11.   send(clientSocket, "bla bla bla" );
  12.   close(clientSocket);
  13. }


 

Code :
  1. /* pour le client */
  2. struct sockaddr_in address = {AF_INET, 10.0.0.102, htons(1200)};
  3. socket clientSocket;
  4. connect(clientSocket, address );
  5. send(clientSocket, "donne moi ton fichier!" );
  6. recv(clientSocket, buffer);


Message édité par maxmoi_la le 19-04-2005 à 00:29:03
Reply

Marsh Posté le 19-04-2005 à 00:37:54    

{AF_INET, 0.0.0.0, htons(1200)};
 
attention, c'est légal en C++, pas en C.
 
 
après faudrait voir à lire les man, parce que là, même en pseudo code, c'est pas encore ça.
 
 
Et l'ANSI ne sait pas ce que c'est que le réseau, donc encore moins un socket.

Reply

Marsh Posté le 19-04-2005 à 01:13:48    

Taz a écrit :

Et l'ANSI ne sait pas ce que c'est que le réseau, donc encore moins un socket.


 
Comme je l'ai explicititement marqué c'est du PSEUDO. de toute facon ca ne compile ni en C++ ni en C à cause que 0.0.0.0 n'est pas un type de donnée valide.
 
Tu as raison, ANSI C ne connais pas le reseau. ce que j'ai voulu dire c'est que ce code fonctionne aussi bien sur un compilateur GNU, que sur le compilateur Microsoft ou borland, car les nom de types et de fonctions sont compatible.
 
Remarque au lieu de critiquer tu ferrais mieux de faire un meilleur exemple.


Message édité par maxmoi_la le 19-04-2005 à 01:17:15
Reply

Marsh Posté le 19-04-2005 à 09:06:08    

ouais ben non. S'il oublie le bordel de WSAMachin() et ben ça tournera jamais sous OuinOuin

Reply

Marsh Posté le 19-04-2005 à 11:07:54    

ok merci les gars, j'ai trouvé des exemples sur le net bien fichu où 2 programmes discute entre eux(client/serveur).
 
reste maintenant a faire passer un fichier txt du client au serveur, avec ce que vous m'avez dit je devrais m'en tirer comme il faut.
 
merci encore  :hello:  
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed