Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.118.250] |
|
Сообщ.
#1
,
|
|
|
Как послать данные по сети (ну какой-нибудь файл скажем test.txt) с помощь компонента TClientSocket или TServerSocket ???
|
Сообщ.
#2
,
|
|
|
TClientSocket.SendStream()
|
Сообщ.
#3
,
|
|
|
А нельзя по подробнее как конкртно послать какой-либо файл
я просто новичок мало что знаю |
Сообщ.
#4
,
|
|
|
Создать поток, например, TMemoryStream. Загрузить в него твой файл. Потом послать этот файл по сокету.
|
Сообщ.
#5
,
|
|
|
чем дальше тем менее понятно =))
наскока я понял чтобы послать файл(test.txt) я должен сделать так : void __fastcall TForm1::Button1Click(TObject *Sender) { TFileStream *Stream1; Stream1=new TFileStream("C:\\test.txt",fmOpenRead); ClientSocket1->Socket->SendStream(Stream1); } ну IP и порт указать это понятно а на стороне serva что долно быть void __fastcall TForm1::ServerSocket1ClientWrite(TObject *Sender, TCustomWinSocket *Socket) { ???? //ServerSocket1->Socket->ReceiveBuf(?? ); } как положить полученный сервом файл скажем в папку какую либо с:\\papka\test.txt |
Сообщ.
#6
,
|
|
|
Сервер программируется на событие onClientRead
У него есть Socket.ReceiveText который и будет содержать байты пересланного файла. Чтобы сохранить на диск принятый файл, нужно принимать же опять в поток, а потом воспользоваться методом SaveToFile() последнего. |
Сообщ.
#7
,
|
|
|
Посмотри исходники в Examples в самом Builder e.
|
Сообщ.
#8
,
|
|
|
Всё сделал, но облом =))
IP и port всё указал всё работает, текст посылал ,а файл не шлется пишет ошибку какую-то С потоками все работает (файлы с диска на диск копировал) ,а как по сети захочу послать,ну правда сам себе с одного диска на другой(по сети), то облом. Клиент: ClientSocket1->Active=true; TMemoryStream *Stream1; Stream1= new TMemoryStream(); Stream1->LoadFromFile("C:\\test.txt"); ClientSocket1->Socket->SendStream(Stream1); Stream1->Clear(); Серв: void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { AnsiString asd=Socket->ReceiveText(); ShowMessage(asd); TMemoryStream *Str,*Str1; Str= new TMemoryStream(); Str1= new TMemoryStream(); ServerSocket1->Socket->ReceiveBuf(Str,Socket->ReceiveLength()); Str1->CopyFrom(Str,Str->Size); Str1->SaveToFile("d:\\text.txt"); Str->Clear(); Str1->Clear(); } что тут не так ??? |