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代码),好了就这些,去加个心跳。

相关推荐
byoass3 分钟前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
南境十里·墨染春水15 分钟前
C++笔记 STL——set
开发语言·c++·笔记
L16247616 分钟前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
.柒宇.1 小时前
FastAPI 基础指南:从入门到实战
开发语言·python·fastapi
xyq20241 小时前
Go 错误处理
开发语言
桌面运维家1 小时前
服务器进程异常监控:快速定位与排障实战指南
运维·服务器
JAVA面经实录9171 小时前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain
@CLoudbays_Martin111 小时前
UniApp是否能够接入SDK游戏盾呢?
服务器·网络·网络协议·tcp/ip·安全
Slow菜鸟1 小时前
Codex CLI 教程(五)| AI 驱动项目从零到一:面向 Java 全栈工程师打造个人 ECC(V2版)
java·开发语言·人工智能
lsx2024061 小时前
Julia 基本运算符
开发语言