![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Меня тут заинтересовал один вопрос... А можно ли как-то произвести считывание из файла, который находится не на винте, а, допустим, в интернете...??? что-то вроде http://www.сайт.ru/file.txt ... и хорошо бы в этот файл научиться что-нить записывать... Может это как-то легко делается...
|
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: нет Всего: 25 |
ИМХО да.
Но там с водом адреса туруды. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
![]() ![]() |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Считать файл обычно труда не представляет. Открываем сокет на 80-й порт нужного хоста и передаем ему
GET /file.txt HTTP/1.1 <CR> <CR> В ответ получим файл. Записать тоже в принципе можно, используя тот же HTTP, но кто тебе просто так позволит файлы переписывать ? |
|||
|
||||
Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Ну, сайт-то мой, так что записать должны дать...
Наверное...... ![]() А вот как сокет на 80-й порт открыть? P.s. может какой исходничек у тя есть...? |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Исходников сейчас под рукой нет. Могу дать направление:
MSDN "The Baseline Version: A Very Poor Performing Application" BOOL Map[ROWS][COLS]; void LifeUpdate() { ComputeNext( Map ); for( int i = 0 ; i < ROWS ; ++i ) //serialized for( int j = 0 ; j < COLS ; ++j ) Set( i, j, Map[i][j] ); //chatty } BYTE Set(row, col, bAlive) { SOCKET s = socket(…); BYTE byRet = 0; setsockopt( s, SO_SNDBUF, &Zero, sizeof(int) ); bind( s, … ); connect( s, … ); send( s, &row, 1 ); send( s, &col, 1 ); send( s, &bAlive, 1 ); recv( s, &byRet, 1 ); closesocket( s ); return byRet; } Основное в процедуре Set(..) 1. Создать сокет (socket) 2. Подключить его к локальной машине (bind) 3. Соединится с удаленной машиной (connect) 4. Посылать данные (send) 5. Получать данные (recv) |
|||
|
||||
Plotter |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 20.10.2002 Где: Москва Репутация: нет Всего: нет |
Лана, попробую что-нить смастерить... Будут вопросы - напишу.
|
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Можно использовать класс CHTTPFile
Также можно просто использовать библиотеку wininet. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
DrMasik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Вот то, что ты хотел. как раз пару мес назад попросили написать... Лови и пользуйтесь! Только копирайты поставьте, плиз
![]() //The main file for FTP auot update //Let's beginning #include <windows.h> #include <wininet.h>// Wininet.lib #include <time.h> //for local time #include <fstream> #include <string> #include <conio.h> #include <iostream> //#include "Error.h" //------------------------------------------------------------------------------------------ ---------------*/ HINTERNET ConnectedHandle; WIN32_FIND_DATA FindFileDataLocal; std::string FilePathLocal="\0", DirectoryPath="\0", EntrenceDirName, LocalPathToDataFile="\0", ErrorString="NO errors"; //------------------------------------------------------------------------------------------ ---------------*/ bool ConnectToFTPServer(void); bool DataRead(std::string *HostIPOrAddress, std::string *UserLogon, std::string *UserPassword, std::string *FilePathLocal); void HelpData(void); bool IsItDirectory(void); bool ItemFindLocal(std::string ItemName, HANDLE *HDL); bool ParentLevelGo(void); void Error(int Type); void RepeatUntillKeyPressed(void); //------------------------------------------------------------------------------------------ ---------------*/ bool ExistDirectory(){ if(!FtpSetCurrentDirectory(ConnectedHandle, FindFileDataLocal.cFileName)){ //std::cout<<"Exist->"<<FindFileDataLocal.cFileName<<std::endl; //std::cout<<"Directory NOT exist!"<<std::endl; return (false); }//if //if(! //std::cout<<"Exist->"<<FindFileDataLocal.cFileName<<std::endl; FtpSetCurrentDirectory(ConnectedHandle, ".."); //)//std::cout<<"Directory chache error exist!"<<std::endl; //std::cout<<"Directory exist!"<<std::endl; return (true); }//ExistDirectry//------------------------------------------------------------------------------------------ ---------------*/ int main(int argc, char *argv[]){//The maine:) начало начал HANDLE HandlerFilePathLocal; struct tm *newtime; time_t aclock; std::fstream LogFile; bool FullExit=false; //------------------------------- LocalPathToDataFile=argv[0]; for(int i=LocalPathToDataFile.length()-1; LocalPathToDataFile[i]!='\\'; i--) LocalPathToDataFile.replace(i, 1, ""); //------------------------------- if(!ConnectToFTPServer()) FullExit=true; //------------------------------- //Open log file LogFile.open((LocalPathToDataFile+"FTPAULog.txt").c_str(), std::ios_base::app | std::ios_base::out); if(!LogFile.is_open()) LogFile.open((LocalPathToDataFile+"FTPAULog.txt").c_str(), std::ios_base::out); LogFile<<"------------------------------------------------------------------&qu ot;<<std::endl; time( &aclock ); /* Get time in seconds */ newtime = localtime( &aclock ); /* Convert time to struct *//* tm form */ LogFile<<"Beginning of transfer of the data at\t\t"<<asctime(newtime);//<<std::endl; LogFile.close(); //------------------------------- if(!FullExit){ DirectoryPath=FilePathLocal; if(DirectoryPath.empty() || argc>1){ if(argc<2){ FullExit=true; HelpData(); }//if else{ DirectoryPath=argv[1]; }//if }//if std::cout<<"Read data from >>"<<DirectoryPath<<"<<"<<std::endl; //std::cout<<"Read data from >>"<<DirectoryPath.length()<<"<<"<<std::endl; //Sleep(3000); if(!FullExit){ if(DirectoryPath.length()==3) DirectoryPath.replace(DirectoryPath.length()-1,1,""); if(!SetCurrentDirectory(DirectoryPath.c_str())) { Error(8); std::cout<<">>83<<"<<std::endl; FullExit=true; } }//if if(!FullExit){ HandlerFilePathLocal=FindFirstFile((DirectoryPath+"\\*.*").c_str(), &FindFileDataLocal); if(HandlerFilePathLocal==INVALID_HANDLE_VALUE){ Error(3); FullExit=true; } FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); }//if }//if //если есть это дирестория на серваке - входим в нее иначе создаем и тоже самое while(!FullExit){ if(IsItDirectory()){ //std::cout<<FindFileDataLocal.cFileName<<std::endl; if(ExistDirectory()){//входим в директорию на серваке и локально //std::cout<<FindFileDataLocal.cFileName<<std::endl; if(!FtpSetCurrentDirectory(ConnectedHandle, FindFileDataLocal.cFileName)){ std::cout<<FindFileDataLocal.cFileName<<std::endl; Error(7); std::cout<<">>>103<<<"<<std::endl; FullExit=true; break; } //else std::cout<<"FtpSetCurrentDirectory was done successfully!"<<std::endl; //local DirectoryPath+="\\"; DirectoryPath+=FindFileDataLocal.cFileName; if(!SetCurrentDirectory(DirectoryPath.c_str())){ Error(8); std::cout<<">>112<<"<<std::endl; FullExit=true; break; } //else std::cout<<"Directory chanched successfully!"<<std::endl; HandlerFilePathLocal=FindFirstFile((DirectoryPath+"\\*.*").c_str(), &FindFileDataLocal); if(HandlerFilePathLocal==INVALID_HANDLE_VALUE){ Error(3); FullExit=true; break; } FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); }//if else{//создаем директорию if(!FtpCreateDirectory(ConnectedHandle, FindFileDataLocal.cFileName)){ Error(4); FullExit=true; break; } //else std::cout<<"FtpCreateDirectory was done successfully!"<<std::endl; if(!FtpSetCurrentDirectory(ConnectedHandle, FindFileDataLocal.cFileName)){ Error(7); std::cout<<">>>135<<<"<<std::endl; FullExit=true; break; } //else std::cout<<"FtpSetCurrentDirectory was done successfully!"<<std::endl; //local DirectoryPath+="\\"; DirectoryPath+=FindFileDataLocal.cFileName; if(!SetCurrentDirectory(DirectoryPath.c_str())){ Error(8); std::cout<<">>143<<<"<<std::endl; FullExit=true; break; } //else std::cout<<"Directory chanched successfully!"<<std::endl; HandlerFilePathLocal=FindFirstFile((DirectoryPath+"\\*.*").c_str(), &FindFileDataLocal); if(HandlerFilePathLocal==INVALID_HANDLE_VALUE){ Error(3); FullExit=true; break; } FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); }//else }//if else{//it is a file if(FtpPutFile(ConnectedHandle, (DirectoryPath+"\\"+FindFileDataLocal.cFileName).c_str(), FindFileDataLocal.cFileName, FTP_TRANSFER_TYPE_UNKNOWN, 0)); //std::cout<<"File updated!"<<std::endl; else { Error(11); FullExit=true; break; } }//else //go on next file on local HDD if(FindNextFile(HandlerFilePathLocal, &FindFileDataLocal)){ //std::cout<<"Next item exist!"<<std::endl; } else{// go to the parent level //std::cout<<"Next item NOT exist!"<<std::endl; while(1){ //std::cout<<"Going to the parent level!"<<std::endl; EntrenceDirName="\0"; if(!ParentLevelGo()){FullExit=true; break;} else{//go to current DIR if(!SetCurrentDirectory(DirectoryPath.c_str())){ Error(8); std::cout<<">>175<<"<<std::endl; FullExit=true; break; } //else std::cout<<"Directory chanched successfully!"<<std::endl; HandlerFilePathLocal=FindFirstFile((DirectoryPath+"\\*.*").c_str(), &FindFileDataLocal); if(HandlerFilePathLocal==INVALID_HANDLE_VALUE){ Error(3); FullExit=true; break; } //std::cout<<FindFileDataLocal.cFileName<<std::endl; FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); FindNextFile(HandlerFilePathLocal, &FindFileDataLocal); //std::cout<<FindFileDataLocal.cFileName<<std::endl; if(!FtpSetCurrentDirectory(ConnectedHandle, "..")){ Error(7); std::cout<<">>>195<<<"<<std::endl; FullExit=true; break; } //else std::cout<<"FtpSetCurrentDirectory was done successfully!"<<std::endl; //идем к тому эленменту, в который зашли if(!ItemFindLocal(EntrenceDirName, &HandlerFilePathLocal)){ Error(10); FullExit=true; break; } //если за ним нет ничего - идем снова на родительский уровень if(FindNextFile(HandlerFilePathLocal, &FindFileDataLocal)) break; else continue; }//while }//else }//else }//while //------------------------------- CloseHandle(ConnectedHandle); std::cout<<"Send data finished!"<<std::endl; LogFile.open((LocalPathToDataFile+"FTPAULog.txt").c_str(), std::ios_base::app | std::ios_base::out); time( &aclock ); /* Get time in seconds */ newtime = localtime( &aclock ); /* Convert time to struct tm form */ LogFile<<"Error : \t\t\t\t\t"<<ErrorString<<std::endl; LogFile<<"The termination of transfer of the data at\t"<<asctime( newtime )<<std::endl; LogFile.close(); //Delay(3000); //RepeatUntillKeyPressed(); return 0; }//------------------------------------------------------------------------------------------ --------------*/ bool ItemFindLocal(std::string ItemName, HANDLE *HDL){ std::string String1; HANDLE FindFileHandlerLocal; FindFileHandlerLocal=FindFirstFile((DirectoryPath+"\\*.*").c_str(), &FindFileDataLocal); if(FindFileHandlerLocal==INVALID_HANDLE_VALUE) Error(3); FindNextFile(FindFileHandlerLocal, &FindFileDataLocal); FindNextFile(FindFileHandlerLocal, &FindFileDataLocal); String1=FindFileDataLocal.cFileName; while(ItemName!=String1){ if(!FindNextFile(FindFileHandlerLocal, &FindFileDataLocal)){ return (false); }//if String1=FindFileDataLocal.cFileName; }//while (*HDL)=FindFileHandlerLocal; return (true); }//------------------------------------------------------------------------------------------ --------------*/ bool ParentLevelGo(void){ if(FilePathLocal==DirectoryPath) return (false); bool CycleExit=false; for(int i=DirectoryPath.length()-1; !CycleExit;i--){ if(DirectoryPath[i]=='\\') CycleExit=true; else EntrenceDirName.insert(0, DirectoryPath[i]); DirectoryPath.replace(i, 1, ""); }//for return (true); }//------------------------------------------------------------------------------------------ --------------*/ bool IsItDirectory(void){ if((FindFileDataLocal.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) || (FindFileDataLocal.dwFileAttributes==48)//Arch || (FindFileDataLocal.dwFileAttributes==18)//hidden || (FindFileDataLocal.dwFileAttributes==17)//Only Read || (FindFileDataLocal.dwFileAttributes==51)//hidden+OR+arch || (FindFileDataLocal.dwFileAttributes==19)//hidden+OR || (FindFileDataLocal.dwFileAttributes==49)//arch+OR || (FindFileDataLocal.dwFileAttributes==50)//hidden+arch || (FindFileDataLocal.dwFileAttributes==20)//system dir || (FindFileDataLocal.dwFileAttributes==55)//SD+H+A+O || (FindFileDataLocal.dwFileAttributes==53)//SD+A+O || (FindFileDataLocal.dwFileAttributes==54)//SD+A+H || (FindFileDataLocal.dwFileAttributes==23)//SD+H+O || (FindFileDataLocal.dwFileAttributes==22)//SD+H || (FindFileDataLocal.dwFileAttributes==21)//SD+O || (FindFileDataLocal.dwFileAttributes==52)//SD+A ) return (true); return (false); }//------------------------------------------------------------------------------------------ --------------*/ bool DataRead(std::string *HostIPOrAddress, std::string *UserLogon, std::string *UserPassword, std::string *FilePathLocal){ char ch; int k=0; std::ifstream OpenedFile((LocalPathToDataFile+"FTPAutoUpdateData.txt").c_str()); if(!OpenedFile) return (false); while(k<4){ OpenedFile.get(ch); if(ch=='\n'){k++;continue;} if(ch=='\0') break; if(OpenedFile.eof()) break; switch(k){ case 0: (*HostIPOrAddress)+=ch; break; case 1: (*UserLogon)+=ch; break; case 2: (*UserPassword)+=ch; break; case 3: (*FilePathLocal)+=ch; break; default: Error(6); }//switch; }//while OpenedFile.close(); return (true); }//DataRead//------------------------------------------------------------------------*/ void RepeatUntillKeyPressed(void){ std::cout<<"Press any key..."<<std::endl; while(!kbhit()); }//void RepeatUntillKeyPressed(void)//--------------------------------------------------------------------*/ bool ConnectToFTPServer(void){ HINTERNET OpenedInetHandle; std::string HostIPOrAddress="\0", UserLogon="\0", UserPassword="\0"; //Open internet connection OpenedInetHandle=InternetOpen("FTPAutoUpdate V1.0", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); if(OpenedInetHandle==NULL){ Error(0); return (false); } std::cout<<"InternetOpen was successfully."<<std::endl; //Read data for reading data from server - user definition data if(!DataRead(&HostIPOrAddress, &UserLogon, &UserPassword, &FilePathLocal)){ Error(1); return (false); } std::cout<<"DataRead was done successfully."<<std::endl; //connect to the server ConnectedHandle=InternetConnect(OpenedInetHandle, HostIPOrAddress.c_str(), INTERNET_DEFAULT_FTP_PORT, UserLogon.c_str(), UserPassword.c_str(),INTERNET_SERVICE_FTP,0,0); if(ConnectedHandle==NULL){ Error(0); return (false); } std::cout<<"InternetConnect was done successfully."<<std::endl; return (true); }//----------------------------------------------------------------*/ void HelpData(void){ std::cout<< "*--------------------- Help data ---------------------*"<<std::endl; std::cout<< "* *"<<std::endl; std::cout<< "* If you has an error about local file message it *"<<std::endl; std::cout<< "* mean you have no 'FTPAutoUpdateData.txt' file or *"<<std::endl; std::cout<< "* it is empty. Please, fillout it. *"<<std::endl; std::cout<< "* *"<<std::endl; std::cout<< "* >>>File format<<< *"<<std::endl; std::cout<< "* *"<<std::endl; std::cout<< "* The first string must contain host IP or it name, *"<<std::endl; std::cout<< "* next string - user login, *"<<std::endl; std::cout<< "* next string must contain user password, *"<<std::endl; std::cout<< "* next string - full quality name to local directory, *"<<std::endl; std::cout<< "* each contain your files to transfere. *"<<std::endl; std::cout<< "* *"<<std::endl; std::cout<< "* Written by Didusenko Maksim. *"<<std::endl; std::cout<< "* [email protected] *"<<std::endl; std::cout<< "*******************************************************"<<std::endl; }//HelpData//------------------------------------------------------------------------------------------ ------ void Error(int Type){ // char ch; switch(Type){ case 0: //PrintOut(-1, GetLastError()); //std::cout<<"Error # "<<GetLastError()<<" !!!"<<std::endl; // CreateErrorLog(GetLastError()); break; case 1: ErrorString="Can't read data from local directory! It may be empty."; break; case 2: ErrorString="Can't read data from local directory! It was not defined!"; break; case 3: ErrorString="Can't read data from defined local directory!"; break; case 4: ErrorString="Can't create directory on sever!"; break; case 5: ErrorString="Can't write down file on sever!"; break; case 6: ErrorString="Can't undefined item in DataRead switch!"; break; case 7: ErrorString="Can't set current directory on server!"; break; case 8: ErrorString="Error!!! Can't set current local directory!"; break; case 9: ErrorString="Can't find local directory!"; break; case 10: ErrorString="Current item was not found!"; break; case 11: ErrorString="File can't put on srver!"; break; default: ErrorString="Uncknow error!"; break; }//switch if(GetLastError()==12029){ ErrorString="Server not found"; std::cout<<ErrorString<<std::endl; }//if else{ if(Type>11){ std::cout<<"Error # "<<GetLastError()<<" !!!"<<std::endl; ErrorString="Uncknow error!"; std::cout<<ErrorString<<std::endl; }//else else{ std::cout<<"Error!!! "<<ErrorString<<std::endl; }//else }//else }//Error()//-------------------------------------*/ ![]() ////////////////////////////////////////////////////////// ![]() Файл Error.h #ifndef Drmasiks_Error_Header_File #define Drmasiks_Error_Header_File #include <iostream> void Error(int Type){ // char ch; switch(Type){ case 0: //PrintOut(-1, GetLastError()); //std::cout<<"Error # "<<GetLastError()<<" !!!"<<std::endl; // CreateErrorLog(GetLastError()); break; case 1: std::cout<<"Error!!! Can't read data from local directory!"<<std::endl; std::cout<<"It can be empty!"<<std::endl; break; case 2: std::cout<<"Error!!! Can't read data from local directory!"<<std::endl; std::cout<<"It was not defined!"<<std::endl; break; case 3: std::cout<<"Error!!! Can't read data from defined local directory!"<<std::endl; std::cout<<">>> Panic <<<"<<std::endl; break; case 4: std::cout<<"Error!!! Can't create directory on sever!"<<std::endl; break; case 5: std::cout<<"Error!!! Can't write down file on sever!"<<std::endl; std::cout<<">>> Panic <<<"<<std::endl; break; case 6: std::cout<<"Error!!! Can't undefined item in DataRead switch!"<<std::endl; std::cout<<">>> Panic <<<"<<std::endl; break; case 7: std::cout<<"Error!!! Can't set current directory on server!"<<std::endl; break; case 8: std::cout<<"Error!!! Can't set current local directory!"<<std::endl; break; case 9: std::cout<<"Can't find local directory!"<<std::endl; break; case 10: std::cout<<"Current item was not found!"<<std::endl; break; case 11: std::cout<<"File can't put on srver!"<<std::endl; break; default: std::cout<<"Uncknow error!"<<std::endl; break; }//switch std::cout<<"Error # "<<GetLastError()<<" !!!"<<std::endl; }//Error()//-------------------------------------*/ #endif ![]() |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
Не так дело не пойдетDrMasik ты ж ему подумать не даеш, а сразу код лепишь, у него ж прогресса не будет
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
Step |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
DrMasik к стати такие коды лучше по мылу отпровляй, кому надо будет сам попросит.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
DrMasik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Согласен, что подумать не дам. Хотя, если он будет не просто читать и вставлять, а еще и разберется почему так, а не иначе, хотя иногда можно и иначе, это и так ясно, он будет учиться... Как говорил мой учитель:"научился писать - научись читать..."
|
|||
|
||||
DrMasik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 13.12.2002 Репутация: нет Всего: нет |
Дело в том, что я уже не один раз столкнулся с тем, что такого мыла уже не существует, и дабы у людей не возникало бодобных ситуаций я сделал то. что сделал!
|
|||
|
||||
XpyDi |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 25.11.2002 Где: USSR Репутация: нет Всего: 2 |
Прощу прощения за флейм, но по-поводу кода на прошлой странице я считаю найлучшим вариантом держать хостинг где-нибудь на narod.ru(или что-то в этом роде), куда и скидывать подобные файлы, а те кому это действительно необходимо качали бы уже себе на винчестер.
|
|||
|
||||
Unregistered |
|
|||
Unregistered |
вот млин ... чел поджелдился инфой ..а вы его критикуете :-)
гы . и при этом хацкер растет :-))) гы гы ... А потому еще попросит как пароль поменять на машине , путем использования ВинАпи :-))) гы |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Кстати, про записать файл
![]() ![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
dim |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Ни один нормальный хостинг провайдер не разрешает такого запроса на своих веб серверах. --------------------
that's all |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
dim речь была не о провайдерах, а о возможности
![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
dim |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Baa Да, но практически получается, что использовать такую возможность весьма проблемно, поскольку подавляющее большинсотво паблик вебсайтов размещены на различных хостингах. Кроме того возможность записи на чужой вебсайт (не принадлежащий, тому кто собрался писать) вообще исключается, потому что для таких вещей надо проходить аутентификацию.
--------------------
that's all |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |