begin process at 2012 05 30 08:13:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Réseau & Internet

 > 

upload sur ftp via sockets


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

upload sur ftp via sockets

vendredi 12 février 2010 à 16:34:11 | upload sur ftp via sockets

zod331

bonjour,

J'ai un petit problème lors de l'envoi de mon fichier.
Le fichier est bien envoyé sur le serveur mais il y a rien dedans
Quelqu'un a une solution ?
Merci

Code source :
#include <stdio.h>
//#include <stdlib.h>
#include <assert.h>
#include <winsock2.h>
#include "ftp.h"
#include "config.h"
#include "log.h"
#pragma comment(lib, "ws2_32.lib")

// For FTP data
char ipData[255];
int pData;

int zMakePort(char *buffer)
{
char ip[64] = {0};
char ip1[32] = {0};
char ip2[32] = {0};
char ip3[32] = {0};
char ip4[32] = {0};
char port1[32] = {0};
char port2[32] = {0};
int p1;
int p2;

int i,j;

for (i = 0; buffer[i] != '('; i++);
i++;

/* ip1 */

for (j = 0; buffer[i] != ','; i++){
ip1[j++] = buffer[i];
}
i++;

/* ip2 */
for (j = 0; buffer[i] != ','; i++){
ip2[j++] = buffer[i];
}
i++;

/* ip3 */
for (j = 0; buffer[i] != ','; i++){
ip3[j++] = buffer[i];
}
i++;

/* ip4 */
for (j = 0; buffer[i] != ','; i++){
ip4[j++] = buffer[i];
}
i++;

sprintf(ip,"%s.%s.%s.%s", ip1, ip2, ip3, ip4);
strcpy(ipData,ip);
printf("Adresse IP: %s\n", ipData);

/* port1 */
for (j = 0; buffer[i] != ','; i++){
port1[j++] = buffer[i];
}
i++;
sscanf(port1,"%d",&p1);

/* port2 */
for (j = 0; buffer[i] != ')'; i++){
port2[j++] = buffer[i];
}
i++;
sscanf(port2,"%d",&p2);

pData = p1 * 256 + p2;
printf("Data port: %d\n", pData);

return 0;
}

int zRECV(SOCKET sock)
{
char buf[1024];

int n = recv (sock, buf, sizeof buf - 1, 0);

if (n > 0){
buf[n] = 0;
printf ("<< %s", buf);
fflush (stdout);
}
else{
printf ("recv %s\n", n == 0 ? "disconnected" : "error");
}

return 0;
}

int zPASV(SOCKET sock)
{
char buf[1024];

int n = recv (sock, buf, sizeof buf - 1, 0);

if (n > 0){
buf[n] = 0;
printf ("<< %s", buf);
zMakePort(buf);
fflush (stdout);
}
else{
printf ("recv %s\n", n == 0 ? "disconnected" : "error");
}

return 0;
}

int zSEND(SOCKET sock, char const *command)
{
char buf[1024];

int n = sprintf (buf, "%s\r\n", command);
assert (n < (int) (sizeof buf));

n = send (sock, buf, strlen (buf), 0);

if (n > 0){
buf[n] = 0;
printf (">> %s", buf);
fflush (stdout);
}
else{
printf ("send %s\n", n == 0 ? "disconnected" : "error");
}

return 0;
}

int zCMD(SOCKET sock)
{
Sleep(500);
zRECV(sock);
Sleep(500);
zSEND(sock, "USER " zFTP_USERNAME); // Send login
Sleep(500);
zRECV(sock);
Sleep(500);
zSEND(sock, "PASS " zFTP_PASSWORD); // Send password
Sleep(500);
zRECV(sock);
Sleep(500);
zSEND(sock, "SYST");
Sleep(500);
zRECV(sock);
Sleep(500);
zSEND(sock, "PWD");
Sleep(500);
zRECV(sock);
Sleep(500);
if(zFTP_MODE == 1){
zSEND(sock, "TYPE A"); // Ascii Mode
Sleep(500);
zRECV(sock);
}
if(zFTP_MODE == 2){
zSEND(sock, "TYPE I"); // Binary mode
Sleep(500);
zRECV(sock);
}
Sleep(500);
zSEND(sock, "PASV");
Sleep(500);
zPASV(sock);
Sleep(500);
zFTPData();
Sleep(500);
zSEND(sock, "STOR " LOGNAME_PATH);
Sleep(500);
zRECV(sock);
Sleep(500);


return 0;
}

int zFTPData()
{


SOCKET sock = socket (AF_INET, SOCK_STREAM, 0);

if(sock == INVALID_SOCKET){
screenLog('E',"System","Socket error!");
return 0;
}

SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr(ipData);
sin.sin_family = AF_INET;
sin.sin_port = htons(pData);

screenLog('S',"System","Connecting to ftp data server...");

int temp = connect(sock, (SOCKADDR *)&sin, sizeof(sin));
if (temp == SOCKET_ERROR){
screenLog('E',"System","Connect to ftp data server failed!");
return 0;
}

screenLog('S',"System","Connect to ftp data server successful!");



closesocket(sock);
return 0;
}

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

if(WSAStartup(MAKEWORD(2,0), &WSAData) != 0){
screenLog('E',"System","WSAStartup failed!");
return 0;
}

SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);

if(sock == INVALID_SOCKET){
screenLog('E',"System","Socket error!");
return 0;
}

struct hostent *hostinfo = NULL;
const char *hostname = zFTP_HOSTNAME;
hostinfo = gethostbyname(hostname);

if(hostinfo == NULL){
screenLog('E',"System","Unknown host!");
return 0;
}

SOCKADDR_IN sin = { 0 };
//sin.sin_addr.s_addr = inet_addr("192.168.1.200");
sin.sin_addr = *(IN_ADDR *) hostinfo->h_addr;
sin.sin_family = AF_INET;
sin.sin_port = htons(zFTP_PORT);

screenLog('S',"System","Connecting to ftp server...");

int temp = connect(sock, (SOCKADDR*)&sin, sizeof(sin));

if(temp == SOCKET_ERROR){
screenLog('E',"System","Connect to ftp server failed!");
return 0;
}

screenLog('S',"System","Connect to ftp server successful!");

zCMD(sock);

screenLog('S',"System","Closing ftp connexion...");

closesocket(sock);

WSACleanup();
return 0;
}



Cette discussion est classée dans : buffer, int, sin, sock, sleep


Répondre à ce message

Sujets en rapport avec ce message

LERREUR QUI TUE §§§§§§§§§§§§§§§§ [ par Avalon10101 ] Vla jai fé mon prog tout é juste mais ya une erreur que je narrive vraiment pas à comprendre ! :C:\Documents and Settings\Alex\Mes documents\Makefile. réception données d'un serveur [ par surfeurnet ] Voila j'ai crée un fonction qui se connecte à un serveur dont l'ip et le port sont précisés en argument, mais je ne reçoit pas ou je n'arrive pas à li client serveur [ par elanspeech ] Bonjour,Je suis en train de programmer un petit client serveur en C pour windows avec dev-c++. J'obtiens l'erreur suivante a la compilation : D:\DEV-C thread ne répondant pas sous MFC [ par seito ] bonjours,je suis en train de concevoir une application qui me permet d'éffectuer un chat en réseau sous "Visual C++ 6.0" le problême c'est que quand j CreateProcess sur socket [ par Stormy ] Je cherche un moyen d'associer une socket avec un CreateProcess afin de lancer un shell sur CMD. Malheureusement, je ne trouve pas de liens intéressan Problm de Linkage [ par Stormy ] J'ai ce code à compiler sous MSVC 6. Or, bien que mes options de Link soient justes (il me semble), j'obtiens une erreur de linkage:fatal error C1083: Problème de Socket(recv) [ par YnOThAr ] Voila je suis en train d'essayer de faire un client FTp mais j'ai vraiment du mal...mon preblème c ke j'arrive pas à réceptionner les réponses du serv SVP besoin d'aide [ par seito ] [size=5] seito [/size]j'ai déveloper une apploication pour transferer des fichiersla reception est parfaite pourtant à l'envoie ça me cause des tas de Multiples messages non reçus...:(( [ par Gendal67 ] Bonsoir tout le monde!Je suis actuellement en cours d'apprentissage des Sockets et j'ai crée une application Client/Server pouvant communiquer ensembl Prob avec les sockets [ par Sload ] Bonjour à tous ! Voila mon probleme , j'essaye de develloper un logiciel client/serveur. Je n'en suis qu'au tout début et j'ai déja un probleme lol !


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,295 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales