Envoi contenu d'un fichier par socket

cs_aymoun11 Messages postés 9 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 12 septembre 2008 - 12 sept. 2008 à 17:03
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 22 sept. 2008 à 17:57
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

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
13 sept. 2008 à 08:19
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";
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
22 sept. 2008 à 17:57
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]
0
Rejoignez-nous