Delphi IdTcpServer IdTcpClient 传输简单文本
Delphi IdTcpServer IdTcpClient 传输简单文本
- 已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!
- FStringStream 、FStrStream : FStringStream:=TStringStream.Create('',TEncoding.UTF8);
已经很久敲代码了,想找一段直接Delphi11 TCP简单文本传输,费劲!
其实非常简单,因为Delphi11已经基于宽字符串了,所以,老猿们会想多,不多说上代码:
服务端:
procedure TMainForm.IdTCPServer1Execute(AContext: TIdContext);
vars:String;
beginAContext.Connection.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;beginFStrStream.Clear;AContext.Connection.IOHandler.ReadStream(FStrStream, -1, False);FStrStream.Position := 0;ShowTip( FStrStream.DataString, 50000 );end;
end;
客户端:
procedure TMainForm.SpeedButton7Click(Sender: TObject);
var Len:Int64;s : String;
begin
trys := 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) thenbeginTipSendInfo.Caption := ' 超过32字未发送.';Exit;end else if ( Len < 1 ) thenbeginTipSendInfo.Caption := ' 无内容...';Exit;endelseTipSendInfo.Caption:='';if not IdTCPClient1.Connected thenbeginIdTCPClient1.Host:=FShowTipIP;IdTCPClient1.Port:=FShowTipPort;IdTCPClient1.ConnectTimeout:=3000;IdTCPClient1.Connect;end;if not IdTCPClient1.Connected thenTipSendInfo.Caption:='链接失败'elsebeginFStringStream.Clear;WriteStringToStream(FStringStream, Trim(s), enUTF8);IdTCPClient1.IOHandler.Write( FStringStream,0,true );TipSendInfo.Caption:=' 发送完成';end;
ExceptOn E : Exception DoTipSendInfo.Caption := ' 异常:'+E.Message;
end;
end;
FStringStream 、FStrStream : FStringStream:=TStringStream.Create(‘’,TEncoding.UTF8);
无握手协议,简单文本传输(差一点去翻原生Socket代码),好了就这些,去加个心跳。