Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] Ошибка в коде  (Прочитано 16266 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Alexander123
Гость
« : 27-10-2009 14:06 » 

Код:
#include <WINSOCK2.H>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <WININET.h>


WSADATA wsaData;
struct hostent *he;
struct sockaddr_in target;

char *check_data(SOCKET s);

main()
{
char command[50]="",user[30]="",pass[30]="",server[30]="",buffer[500]="",ip[20]="";
char filename[30]="";
char pt1[3]="",pt2[3];
char *filebuf;
SOCKET fsock,send_sock;
int port=21,i,j,count,param1,param2,data_port,err;
HANDLE hFile;
DWORD nm;


err=WSAStartup(MAKEWORD(1,1),&wsaData);
if (err!=NO_ERROR){
printf("WSAStartup failed with error: %d\n", err);
return 0;
}

strcpy(user,"123"); //вместо бла бла пишем логин
strcpy(pass,"321"); //пароль
strcpy(server,"127.0.0.1"); // адрес ftp сервера
strcpy(filename,"C:/denwer/1.txt"); //имя файла который будет передан

fsock=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP); //создаём сокет

if(fsock==INVALID_SOCKET)
{
printf("Socket error\n");
return 0;
}

he=gethostbyname(server);

target.sin_family = AF_INET;
target.sin_port = htons (port);
target.sin_addr = *((struct in_addr *)he->h_addr);

if (connect(fsock, &target, sizeof(target)) == SOCKET_ERROR) {

printf("can't create connection\n");
return 0;
}

strcpy(command,"USER "); strcat(command,user); strcat(command,"\r\n");
send(fsock,command,strlen(command),0); //отправляем логин

if(check_data(fsock)==FALSE) { printf("Bad login\n"); return 0;}


strcpy(command,"PASS "); strcat(command,pass); strcat(command,"\r\n");
send(fsock,command,strlen(command),0); //отправляем пароль

if(check_data(fsock)==FALSE) { printf("Bad password\n"); return 0;}

printf("Auth complete\n");

strcpy(command,"PWD\r\n"); //получим текщий каталог
send(fsock,command,strlen(command),0);

if(check_data(fsock)==FALSE) { printf("Can't locate current directory on server\n"); return 0;}

strcpy(command,"PASV\r\n");
send(fsock,command,strlen(command),0);

if(check_data(fsock)==FALSE) { printf("passive mod-failed\n"); return 0;}

i=1;j=0;count=0;
while(TRUE)
{
if(j==4) break;

if(buffer[i]==',') { j++; ip[count++]='.'; }
ip[count++]=buffer[i++]; //вытаскиваем ip из ответа
}
i++;
while(TRUE)
{
if(buffer[i]==',') break;
pt1[count++]=buffer[i++];
}

i++;
while(0==0)
{
if(buffer[i]=='>') break;
pt2[count++]=buffer[i++];
}

param1=atoi(pt1);
param1*=256;
param2=atoi(pt2);

data_port=param1+param2;

send_sock=socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
he=gethostbyname(ip);

target.sin_family = AF_INET;
target.sin_port = htons (data_port);
target.sin_addr = *((struct in_addr *)he->h_addr);

connect(send_sock, &target, sizeof(target));

hFile=CreateFile(filename,GENERIC_READ, FILE_READ_DATA,NULL,OPEN_EXISTING,0,0);
filebuf=malloc(sizeof(char)*GetFileSize(hFile,NULL ));
ReadFile(hFile,filebuf,GetFileSize(hFile,NULL),&nm ,NULL);
CloseHandle(hFile);

strcpy(command,"STOR "); strcat(command,filename);

send(fsock,command,strlen(command),0);
send(send_sock,filebuf,strlen(filebuf),0);
if(check_data(send_sock)==FALSE) { printf("Can't locate current directory on server\n"); return 0;}
free(filebuf);


if(check_data(fsock)==FALSE) { printf("file transfer failed\n"); return 0;}

printf("File delivered\n");

closesocket(fsock); closesocket(send_sock);

return 0;
}
char *check_data(SOCKET s)
{
char buffer[500]="";

if(recv(s,buffer,sizeof(buffer),0)==-1) {
printf("ошибка при приёме данных\n");
exit(-1);
}
if(buffer[0]=='5' || buffer[0]=='4') return FALSE;

return buffer;
}

1>------ Построение начато: проект: ftp2, Конфигурация: Debug Win32 ------
1>Компиляция...
1>ftp21.cpp
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(15) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(51) : error C2664: connect: невозможно преобразовать параметр 2 из 'sockaddr_in *' в 'const sockaddr *'
1>        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(115) : error C2664: connect: невозможно преобразовать параметр 2 из 'sockaddr_in *' в 'const sockaddr *'
1>        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(117) : error C2664: CreateFileW: невозможно преобразовать параметр 1 из 'char [30]' в 'LPCWSTR'
1>        Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(118) : error C2440: =: невозможно преобразовать 'void *' в 'char *'
1>        Для преобразования 'void*' к указателю на тип, не являющемуся 'void', требуется явное приведение
1>c:\documents and settings\projects\ftp2\ftp2\ftp21.cpp(148) : warning C4172: возвращение адреса локальной или временной переменной
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Projects\ftp2\ftp2\Debug\BuildLog.htm"
1>ftp2 - ошибок 5, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
« Последнее редактирование: 27-10-2009 14:29 от Джон » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 27-10-2009 14:11 » 

Alexander123, а ты вобще-то чем занимаешься?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Alexander123
Гость
« Ответ #2 : 27-10-2009 14:16 » 

Я просто начинающий С++ программер!!!!!!!!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 27-10-2009 14:24 » 

Круто начинаешь. С сокетов.

У тебя несовместимость кода и компилятора. Код откуда слизал?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Alexander123
Гость
« Ответ #4 : 27-10-2009 14:28 » new

ЧТо делать?Не понял С такой проблемой впервые сталкиваюсь!!!!!!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 27-10-2009 14:30 » 

Ну я бы код подогнал под компилятор. Хотя можно и наоборот, только хлопотнее.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Alexander123
Гость
« Ответ #6 : 27-10-2009 19:55 » 

Я новичок!  "Ну я бы код подогнал под компилятор. Хотя можно и наоборот, только хлопотнее" Да, очень понятно новичку! Очень понятная выразительная речь! ( Меня осуждаете за то, что я еще не вник , а сами нормально ответить не можете!)
« Последнее редактирование: 28-10-2009 17:04 от Sel » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 27-10-2009 20:46 » 

Alexander123, так тебя же тоже понять не возможно. По твоему поведению можно предположить, что ты хочешь, чтобы за тебя все сделали, но ни как не то, что ты хочешь разобраться и научиться.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Alexander123
Гость
« Ответ #8 : 27-10-2009 21:02 » 

Я хочу научиться!!!! но без помощи я несмогу!!!! Дайте плз материал где это посмотреть и примерчик исходного кода
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 27-10-2009 21:10 » 

Alexander123, если хочешь научиться, то учись!
Начни с чтения теории: язык, необходимые тебе API и т.д.
По мере затруднений спрашивай, но только конкретику. А то, что у нас в голове этой темы - это безобразие: "вот вам код - рассказывайте, чего я не так". А кому это надо - копаться в твоем коде?..

Прочти правила форума - там даны рекомендации по написанию тем.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Alexander123
Гость
« Ответ #10 : 27-10-2009 21:16 » 

Просто вылезла 1 ошибка! Никак не могу ее найти! Можешь помочь исправить?
« Последнее редактирование: 28-10-2009 17:03 от Sel » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 28-10-2009 04:02 » 

Блин просто вылезла 1 ошибка
покажи эжту ошибку.
Записан

Alexander123
Гость
« Ответ #12 : 28-10-2009 13:54 » 

1>------ Построение начато: проект: fft, Конфигурация: Debug Win32 ------
1>Внедрение манифеста...
1>.\Debug\fft.exe.intermediate.manifest : general error c1010070: Failed to load and parse the manifest. 5 C405BAO =09B8 C:070==K9 D09;.
1>Журнал построения был сохранен в "file://c:\Documents and Settings\Projects\fft\fft\Debug\BuildLog.htm"
1>fft - ошибок 1, предупреждений 0
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 29-10-2009 03:57 » 

Failed to load and parse the manifest

проект, скорее всего, не родной для студии. Создай чистый проект нужного типа и осмысленно перекидай код в новый проект. Файл манифеста в новом проекте будет


а ещё не советую хранить проекты в папке c:\Documents and Settings\ , да и вообще на диске C: (система у тебя на C:, насколько понимаю) - иначе после очередной переустановки винды есть 99,99% шанс потерять проекты Улыбаюсь
« Последнее редактирование: 29-10-2009 04:00 от Алексей1153++ » Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines