Delphi xe 的Indy控件 TIdTCPClient 监听问题

benzhhell benzhhell 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
TIdTCPServer 收发都没有问题了,现在是 TIdTCPClient 监听有问题了

TCPClient.Connect成功以后,会 创建一个线程
//创建线程
ThreadHandle := CreateThread(nil, 0, @TForm5.ClientListen, nil, 0, ThreadId);

下面就是仿照 TIdTCPServer 玩的,原来的 Socket.ReadLn 没有问题,现在换成这个Socket.ReadBytes或者.IOHandler.ReadBytes,都出现一个问题,就是服务器端发送的字节,客户端没有响应也就是 检查len =0,但是客户端发送字节后,服务器照常接收,这个时候上次发给客户端的字节过来了,也就是检查len>0了,很奇怪,也就是大家有什么好的建议

procedure TForm5.ClientListen;
var
len:integer;
s:string;
buffer:TBytes;
begin
while true do

begin

try

len :=Form5.TCPClient.Socket.InputBuffer.Size;

if len > 0 then
begin

//s :=Form5.TCPClient.Socket.ReadLn('');
Form5.TCPClient.Socket.ReadBytes(buffer, len, false);
//Form5.TCPClient.IOHandler.ReadBytes(buffer, len, false);
//转化成字符串
s := stringof(buffer);
Form5.SendConsole.Lines.Add(s);
end;
except

end;
end;
end;
...全文

相关推荐

indy10 delphi xe5环境下使用 聊天源代码

可以在indy10 delphi xe5环境下使用 聊天源代码 从indy9 的演示代码中 改编

kisd

基于Delphi的网络考试系统源码解析与实战

Indy项目起源于Borland社区,经过多年发展已集成进主流Delphi版本(如Delphi XE以后系列),并持续维护更新。其核心设计理念是“一次编写,多平台运行”,支持Windows、Linux乃至嵌入式系统。其中,和是实现TCP通信的两个最基础也是最重要的类。:代表客户端角色,用于主动发起与服务器的连接请求。该类封装了Socket连接、发送接收数据、超时控制等功能。:代表服务器端角色,监听指定端口,接受多个客户端的并发接入,并为每个连接创建独立的上下文对象(

丰雅

Delphi VCL DICOM控件开发实战:医疗影像系统底层构建指南

DICOM是医学影像数据交换的国际标准,其解析、渲染与网络通信涉及协议栈、像素级处理和临床合规性等核心挑战。Delphi作为久经验证的Windows桌面开发平台,凭借VCL框架在驱动兼容、GPU可控渲染和零依赖部署等方面具备不可替代的工程优势。本文聚焦DICOM与Delphi VCL的技术融合,深入剖析DICOM协议解析状态机、Intel IPP加速的窗宽窗位实时渲染、C-STORE/C-FIND完整网络服务实现,并覆盖NMPA认证所需的源码可追溯性设计。适用于基层PACS升级、老旧设备对接及AI辅助诊断插

weixin_34090562

远程截图源代码 indy10 domo delphi xe5环境下 调试

能运行在indy10 的代码太少了,这个远程截图源代码 能运行于indy10 的domo ,本人系统是 delphi xe5环境下 调试成功,代码修正自indy9 。

kisd

delphi xe7 tcp socket

delphi xe7 tcp socket

acewolf
评论 21
收藏 已收藏
分享
返回顶部