Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.09.2009, 15:29
Аватар для KINo-nnov
KINo-nnov KINo-nnov вне форума
Прохожий
 
Регистрация: 29.09.2009
Сообщения: 2
Репутация: 10
По умолчанию 4 пакета вместо одного

Добрый день.

Только начинаю работать с сетью в Delphi. Пытаюсь создать простейшую программку для отправки-получения данных. Вроде бы все получается, но... Почему-то у меня клиент отправляет, а сервер соответственно получает 4 пакета вместо 1. Скажите пожалуйста, почему такое может происходить?

Код:
type
...
  TByteArr = array of Byte;
  PByteArr = ^TByteArr;

...
procedure Tmain.sendClick(Sender: TObject);
var
        data: TByteArr;
begin
        data:=StringToHex(msg.Text);
        client.Socket.SendBuf(PByteArr(data)^,Length(data));
end;

...

procedure Tmain.serverClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
        i: Integer;
        data: TByteArr;
        s: String;
begin
//        if Socket.ReceiveLength = 0 then
//                Exit;
        s:='';
        SetLength(data,Socket.ReceiveLength);
        for i:=0 to Socket.ReceiveLength-1 do
                begin
                        Socket.ReceiveBuf(data[i],1);
                        s:=s+IntToHex(data[i],2);
                end;
        log.Lines.Add('Server received: '+s);
        Socket.SendBuf(PByteArr(data)^,Length(data));
end;

Поясню: при отправлении клиентом строки 01020A0B на сервер приходит эта последовательность байт, и еще 3 пустых пакета (ReceiveLength = 0), что и отображается в log (TMemo) как три пустых строки. Естественно, сервер те же три пустых строки отправляет назад клиенту (Socket.SendBuf в serverClientRead).
Причем бывает так, что по первому при текущем запуске проекта нажатию кнопки send все отправляется правильно, то есть отправляется только введенная строка байт.
__________________
-=: KINo :=-
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter