Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

WinSock recv Delphi

-

Вопросы и ответы, обсуждения

- Ваши вопросы по Pascal/Delphi только в данном разделе

Ответ
 
Опции темы
Старый 18.02.2011, 16:16   #1
Знаток Dark Orbit
 Рыцарь-защитник
Аватар для Mebius
 
Mebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского Союза
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
Отправить сообщение для Mebius с помощью ICQ Отправить сообщение для Mebius с помощью Skype™
 
По умолчанию WinSock recv Delphi

Каким образом получить текст пакета из recv так же как в TClientSocket ReceiveText

+ если можно приведите пример где приходят склееные пакеты.

p.s. поиск по recv на форуме ничего не дал, если было ткните плз носом. Только начал работать с винсок апи
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Старый 19.02.2011, 01:02   #2
 Разведчик
Аватар для Unreality2020
 
Unreality2020 никому не известный тип
Регистрация: 28.11.2010
Сообщений: 8
Популярность: 14
Сказал(а) спасибо: 7
Поблагодарили 2 раз(а) в 1 сообщении
 
По умолчанию Re: WinSock recv Delphi

Цитата:
Сообщение от MebiusПосмотреть сообщение
Каким образом получить текст пакета из recv так же как в TClientSocket ReceiveText

+ если можно приведите пример где приходят склееные пакеты.

p.s. поиск по recv на форуме ничего не дал, если было ткните плз носом. Только начал работать с винсок апи

PHP код:
unit Unit1;

interface

uses
  Windows
MessagesSysUtilsClassesGraphicsControlsForms,
  
DialogsScktCompExtCtrlsStdCtrls;

type
  TForm1 
= class(TForm)
    
Image1TImage;
    
Image2TImage;
    
ClientSocket1TClientSocket;
    
ServerSocket1TServerSocket;
    
Button1TButton;
    
procedure Image1Click(SenderTObject);
    
procedure FormCreate(SenderTObject);
    
procedure ClientSocket1Connect(SenderTObject;
    
SocketTCustomWinSocket);
    
procedure ServerSocket1ClientRead(SenderTObject;
    
SocketTCustomWinSocket);
    
procedure ClientSocket1Read(SenderTObjectSocketTCustomWinSocket);
  private
    { Private 
declarations }
    
Recivingboolean;
    
DataSizeinteger;
    
DataTMemoryStream;
  public
    { Public 
declarations }
end;

var
  
Form1TForm1;

implementation
{$R *.DFM}

procedure TForm1.Image1Click(SenderTObject);
begin
  
// Это процедура для открытия сокета на ПРИЁМ (RECEIVING).
  // Button1.Click is this procedure as well.
  
ClientSocket1.Active:= true;
end;

procedure TForm1.FormCreate(SenderTObject);
begin
  
// Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
  
ServerSocket1.Active:= true;
end;

procedure TForm1.ClientSocket1Connect(SenderTObject;
SocketTCustomWinSocket);
begin
  
// Посылаем команду для начала передачи файла.
  
Socket.SendText('send');
end;

procedure TForm1.ClientSocket1Read(SenderTObject;
SocketTCustomWinSocket);
var
  
sslstring;
begin
  s
:= Socket.ReceiveText;
  
// Если мы не в режиме приёма:
  
if not Reciving then
  begin
    
// Теперь нам необходимо получить длину потока данных.
    
SetLength(slStrLen(PChar(s))+1); // +1 for the null terminator
    
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
    
DataSize:= StrToInt(sl);
    
Data:= TMemoryStream.Create;
    
// Удаляем информацию о размере из данных.
    
Delete(s1Length(sl));
    
Reciving:= true;
  
end;
  
// Сохраняем данные в файл, до тех пор, пока не получим все данные.
  
try
    
Data.write(s[1], length(s));
    if 
Data.Size DataSize then
    begin
      Data
.Position:= 0;
      
Image2.Picture.Bitmap.LoadFromStream(Data);
      
Data.Free;
      
Reciving:= false;
      
Socket.Close;
    
end;
  
except
    Data
.Free;
  
end;
end;

procedure TForm1.ServerSocket1ClientRead(SenderTObject;
SocketTCustomWinSocket);
var
  
msTMemoryStream;
begin
  
// Клиент получает команду на передачу файла.
  
if Socket.ReceiveText 'send' then
  begin
    ms
:= TMemoryStream.Create;
    try
      
// Получаем данные на передачу.
      
Image1.Picture.Bitmap.SaveToStream(ms);
      
ms.Position:= 0;
      
// Добавляем длину данных, чтобы клиент знал,
      // сколько данных будет передано
      // Добавляем #0 , чтобы можно было определить,
      // где заканчивается информация о размере.
      
Socket.SendText(IntToStr(ms.Size) + #0);
      // Посылаем его.
      
Socket.SendStream(ms);
    
except
      
// Итак, осталось освободить поток, если что-то не так.
      
ms.Free;
    
end;
  
end;
end
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Цитата:
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Поистине всегда там, где недостает разумных доводов, их заменяет крик.

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Леонардо да Винчи
  Ответить с цитированием
Старый 09.12.2011, 14:54   #3
Знаток Dark Orbit
 Рыцарь-защитник
Аватар для Mebius
 
Mebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского СоюзаMebius трижды герой Советского Союза
Регистрация: 14.06.2010
Сообщений: 584
Популярность: 6626
Сказал(а) спасибо: 86
Поблагодарили 847 раз(а) в 266 сообщениях
Отправить сообщение для Mebius с помощью ICQ Отправить сообщение для Mebius с помощью Skype™
 
По умолчанию Re: WinSock recv Delphi

Код:
SetString(BufString, PChar(Cardinal(@swapBuffer)), iRecvResult);
решение давно найдено)))
________________

Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).


Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Статья] Изучаем SMTP протокол для отправки писем (примеры программ на WinSock API и INDY) Тигрь Школа Читера 7 08.12.2012 15:50
Delphi Misterio[UA] Вопросы и ответы, обсуждения 1 07.11.2010 15:57

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 03:10.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net