Envoi contenu d'un fichier par socket

Signaler
Messages postés
9
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
12 septembre 2008
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
cher amis,
je suis entrain de développer un application pour envoi de contenu d'un ficher ou un tableau par socket a un serveur qui les affiche .pour l'envoie d'un simple message sa marche très bien mais pour un fichier ou un tableau sa marche voic mon code client que je veut le modifié pour l'envoi d'un fichier
:#include <winsock2.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>    // printf
#include <conio.h>    // getch()
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

int main()
{
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);

    SOCKET soc;
    SOCKET sock2;
   
    SOCKADDR_IN sin;
    char buffer2[1024];
    char tab[]=" ";
    char txt[] ='C:\file.txt';
    int ntab= 10;
    int i=0;
   
    soc = socket(AF_INET, SOCK_STREAM, 0);

    sin.sin_addr.s_addr = inet_addr("127.0.0.1");
    sin.sin_family        = AF_INET;
    sin.sin_port        = htons(4444);
   
    connect(soc, (SOCKADDR *)&sin, sizeof(sin));
    strcpy(buffer2,"");
   

   
   
       memset(buffer2,0,1024);
    wsprintf(buffer2, txt);
    send(soc,buffer2,sizeof(buffer2), 0);

       getch();
    closesocket(soc);
    WSACleanup();
    return 0;
}

2 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
2
Salut,

Quel est le probleme exactement ?

Au lieu de faire 1 send, il faudrait que fasses une boucle qui lis et
envoie les données du fichier par petit bloc (donc en utilisant fread
puis send a chaque iteration de ta boucle) tant que la fin du fichier
n'est pas rencontrée.

Autre petite erreur:

char txt[] ='C:\file.txt';

à remplacer par

char txt[] ="C:\\file.txt";
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
Yop,

Ouf oui envoie par bloc , pas d'une seul fois. Un buffer de 1024 c'est grand tout de même. "Trop grand" pour une application.

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]