Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

           Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
           И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - https://clck.ru/fCqwP

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2020, 20:19   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,873
Вопрос Передача текста через Buf с помощью Socket

Доброго времени суток!
Передаю текст
Код:
var
  s: String;
  I: Integer;
begin
  if ClientSocket1.Active then
  begin
    s := ETransfer.Text;
    I := Length(s);
    ClientSocket1.Socket.SendBuf(s, SizeOf(I));
  end;
end;
Получаю текст
Код:
var
  s: String;
  I: Integer;
begin
  I := Socket.ReceiveLength;
  SetLength(s, I);
  Socket.ReceiveBuf(s, I);
  EReceiving.Text := s;
end;
Тип сокета stNonBlocking

Делал передачу 12 раз, каждый раз передавая на один символ больше получаю проблему на картинке ниже.
Чем больше текст тем хуже.

Решение
Код:
procedure TFormMain.BSendClick(Sender: TObject);
var
  Bfr: PChar;
begin
  if ClientSocket1.Active then
  begin
    Bfr := PChar(ETransfer.Text);
    ClientSocket1.Socket.SendBuf(Bfr^, Length(ETransfer.Text));
  end;
end;
 
procedure TFormMain.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  s: String;
begin
  SetLength(s, Socket.ReceiveLength);
  SetLength(s, Socket.ReceiveBuf(Pointer(s)^, Length(s)));
  EReceiving.Text := s;
end;
Изображения
Тип файла: png 1.png (40.5 Кб, 20 просмотров)

Последний раз редактировалось Shouldercannon; 13.12.2020 в 11:16.
Shouldercannon вне форума Ответить с цитированием
Ответ

           Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
           Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача Unicode через Socket Shouldercannon Общие вопросы Delphi 4 16.12.2020 21:28
Передача форматированного текста между socket-клиентами с RichEdit`ами. Klaxwork Общие вопросы Delphi 4 18.12.2013 16:45
Передача данных через socket TCP/IP hidalgo C# (си шарп) 1 10.07.2012 19:03
Передача файла по Socket KoBRaAndrey Работа с сетью в Delphi 2 13.11.2009 20:05
Client Server Socket передача информации с помощью потока One.Love Работа с сетью в Delphi 4 15.01.2008 19:06