Лена |
Отправлено: 24.05.2005, 19:16 |
|
Не зарегистрирован
|
В клиентском приложении отправляю двоичный файл на сервер
TFileStream * SF = new TFileStream(OpenDialog1->FileName, fmOpenRead);
ClientSocket1->Socket->SendStream(SF);
Как организовать диспечерезацию на принимающем сервере (ServerSocket), чтобы он понял, что пришел двоичный файл?
Если отправлю текст методом SendText(), то тут все просто, в начале текста ставлю значок “#”, затем на сервере удалю его и работаю с оставшимся текстом.
Соответственно как принять от сервера обработанный двоичный файл, что писать вместо многоточия и правильно ли это? Предварительно имя двоичного файла уже занесено в SaveDialog1->FileName
if(SaveDialog1->Execute())
{
TFileStream *SF = new TFileStream(SaveDialog1->FileName.c_str(), fmCreate);
int Bufer = Socket->ReceiveLength();
SF->CopyFrom((Socket->ReceiveBuf(..... ,Bufer)), 0); //как тут правильно?
SF->Free();
}
|
|
Лена |
Отправлено: 25.05.2005, 17:02 |
|
Не зарегистрирован
|
Компоненты ServerSocket и ClientSocket.
В клиентском приложении посылаю файл:
try
{
TFileStream * SF = new TFileStream(OpenDialog1->FileName, fmOpenRead);
ClientSocket1->Socket->SendStream(SF);
}
catch(...)
{
ShowMessage("Ошибка передачи");
}
В серверном обрабатываю и посылаю клиентам. Где ошибка? Как правильно?
int Bufer = Socket->ReceiveLength();
TFileStream * Bufs;
Socket->ReceiveBuf(Bufs, Bufer);
try
{
ServerSocket1->Socket->SendStream(Bufs);
}
catch(...)
{
ShowMessage("Ошибка");
}
|
|
Guest |
Отправлено: 25.05.2005, 17:13 |
|
Не зарегистрирован
|
Посмотрите тему TWinSocketStream |
|
Лена |
Отправлено: 25.05.2005, 19:09 |
|
Не зарегистрирован
|
Не могу найти поиском по форуму. |
|
AVC |
Отправлено: 26.05.2005, 08:16 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Не по форуму а по Help'у |
|
Лена |
Отправлено: 26.05.2005, 12:07 |
|
Не зарегистрирован
|
На форуме нашла пример на паскале, совсем не понятно. В Help Builder нашла как пересылать текст, но с этим все понятно. Других примеров тоже не нашла в сети, только на паскале.
Мой новый вариант, тоже не работает:
Отправка сообщения на сервер из клиентского сообщения.
TFileStream * SF = new TFileStream(OpenDialog1->FileName, fmOpenRead);
ClientSocket1->Socket->SendStream(SF);
Прием на сервере ServerSocket1ClientRead и отправка клиентам
int Bufer = Socket->ReceiveLength();
char * Bufs = new char[Bufer+1];
Socket->ReceiveBuf(Bufs, Bufer);
TMemoryStream* str = new TMemoryStream ();
str->Position = 0;
str->WriteBuffer((void*)Bufs,Bufer);
str->Position = 0;
try
{
for(int i= 0;iSocket->ActiveConnections ;i++)
ServerSocket1->Socket->Connections[i]->SendBuf((void*)str,Bufer);
}
catch(...)
{
ShowMessage("Íå õî÷åò");
}
delete Bufs;
str->Free();
return;
Тоже не работает.
|
|
Asher |
Отправлено: 26.05.2005, 12:23 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет
Сходите на Сайт Devnvd
Там есть пример передачи файла, с TServerSocket и TClientSocket
|
|