Delphi IdTcpServer IdTcpClient 传输简单文本

Delphi IdTcpServer IdTcpClient 传输简单文本

  • [已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!](#已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!)
    • [FStringStream 、FStrStream : FStringStream:=TStringStream.Create('',TEncoding.UTF8);](#FStringStream 、FStrStream : FStringStream:=TStringStream.Create('',TEncoding.UTF8);)

已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!

其实非常简单,因为Delphi11已经基于宽字符串了,所以,老猿们会想多,不多说上代码:

服务端:

python 复制代码
procedure TMainForm.IdTCPServer1Execute(AContext: TIdContext);
var
    s:String;
begin
    AContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
    begin
        FStrStream.Clear;
        AContext.Connection.IOHandler.ReadStream(FStrStream, -1, False);
        FStrStream.Position := 0;
        ShowTip( FStrStream.DataString, 50000 );
    end;
end;

客户端:

python 复制代码
procedure TMainForm.SpeedButton7Click(Sender: TObject);
var Len:Int64;
    s : String;
begin
try
    s   := Trim(TipContent.text);
    s   := StringReplace( s, #10, '',  [rfReplaceAll, rfIgnoreCase] );
    s   := StringReplace( s, #13, '',  [rfReplaceAll, rfIgnoreCase] );
    s   := StringReplace( s, ' ', '',  [rfReplaceAll, rfIgnoreCase] );
    Len := length( s );
    if (Len > 32) then
    begin
      TipSendInfo.Caption := ' 超过32字未发送.';
      Exit;
    end else if ( Len < 1 ) then
             begin
                TipSendInfo.Caption := ' 无内容...';
                Exit;
             end
             else
                TipSendInfo.Caption:='';
    if not IdTCPClient1.Connected then
    begin
        IdTCPClient1.Host:=FShowTipIP;
        IdTCPClient1.Port:=FShowTipPort;
        IdTCPClient1.ConnectTimeout:=3000;
        IdTCPClient1.Connect;
    end;
    if not IdTCPClient1.Connected then
        TipSendInfo.Caption:='链接失败'
    else
    begin
        FStringStream.Clear;
        WriteStringToStream(FStringStream, Trim(s), enUTF8);
        IdTCPClient1.IOHandler.Write( FStringStream,0,true );
        TipSendInfo.Caption:=' 发送完成';
    end;
Except
    On E : Exception Do
    TipSendInfo.Caption := ' 异常:'+E.Message;
end;
end;

FStringStream 、FStrStream : FStringStream:=TStringStream.Create('',TEncoding.UTF8);

无握手协议,简单文本传输(差一点去翻原生Socket代码),好了就这些,去加个心跳。

相关推荐
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁4 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超4 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int4 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
-梅4 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog4 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
琥珀色糖4 天前
SimlpeHttp
linux·服务器