Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отправка данных по сокету, TCustomWinSocket 
V
    Опции темы
Ak47black
  Дата 15.4.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Работаю с TCustomWinSocket и неполучаеться послать данные корректно.
Попробую описать проблему:
Хочю послать кусок файла с дополнительными параметрами, но что-бы размер всех этих отсылаемых данных в целом непревышал максимальный размер буфера 8192 байта.
Вот что я пытаюсь сделать
Код

const
  Max_buffer_size = 8192;

procedure CommandSendBackFileBlock(ID: Integer; RemoteFilename: String; Offset: Int64; Socket: TCustomWinSocket);
var
  SendBuffer: String;
  FileBuffer: array of Char;
  TempStream: TFileStream;
begin
  SendBuffer:= '$FileBlock';
  SendBuffer:= SendBuffer+'|'+IntToStr(ID)+'|'+RemoteFilename+'|'+IntToStr(Offset)+'|';
  SetLength(FileBuffer,Max_buffer_size-Length(SendBuffer));
  if not FileExists(RemoteFilename) then exit;
  try
    TempStream:= TFileStream.Create(RemoteFilename,fmOpenRead);
  except
    Exit;
  end;
  TempStream.Position:= Offset;
  TempStream.WriteBuffer(FileBuffer,Length(FileBuffer));// тутс ошибка
  SendBuffer:= SendBuffer+Pchar(FileBuffer);
  Socket.SendText(SendBuffer);
end;

Знаю что в неправельную сторону делаю ,но как-бы тут сделать правильно?
PM MAIL   Вверх
Хрипа
Дата 15.4.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: нет
Всего: нет



Ak47black, 
Чювак Юзай TClientSocket TServerSocket в делфи 7 в кладки интернет!
там отчем просто 
ServerSocket1.Port:=666;
ServerSocket1.Adress:='192.168.0.1';
ServerSocket1.Active:=True;
Все сервак готов принимать данные
ClientSocekt.Port
ClientSocekt.Adress
ClientSocekt.Active:=True; Подключились к серверу
ClientSocekt.Socket.connections[0].SendText(String);
--------------------------------------
Обработка сервером данных
В событие Получения данных
s:=Seocket.ReciveText;
if (s = 'Полученный текст') then begin Дейтсвия end;
Через этот сокет даже файлы передовать можна..
Очень удобная штука лучше чем Кустом Вин сокет

--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
Ak47black
Дата 15.4.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Хрипа, так это и есть TClientSocket.Socked или TServerSocket.Socked  smile , просто для удобства его в процедуру передаю.

Это сообщение отредактировал(а) Ak47black - 15.4.2007, 16:48
PM MAIL   Вверх
MetalFan
Дата 15.4.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



try
TempStream:= TFileStream.Create(RemoteFilename,fmOpenRead); //открываешь на чтение
  except
    Exit;
  end;
  TempStream.Position:= Offset;
  TempStream.WriteBuffer(FileBuffer,Length(FileBuffer));// нахрена писать в файл, открытый для чтения?


з.ы. и вообще подход в корне неверный

Это сообщение отредактировал(а) MetalFan - 15.4.2007, 19:45


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ak47black
Дата 15.4.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



MetalFan, я спутал моя вина,мне нужно сшитать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.