如何用clientsocket处理长信息串? 我在客户端用clientSocket接收服务端发来的tcp包,每个包有个命令头,用read事件接收,对于短的信息可以一次完全处理,但是长的信息在我的客户端不能一次收到,因为我是按照命令头来处理信息,这样的话我只能处理部分消息,后办部分就没办法处理,而服务端的信息格式我不能改动,有没有什么办法能使一条信息完全到达客户端时才储发read时间或者用什么控件? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 接收处理逻辑:1、建立一个全局的循环队列,用来存放接受的报文。2、接收的时候,读取所有的数据SocketReceiveBuf(buf,MaxLen),写入到队列。3、处理队列,看看队列里是否有完整的数据包(可能有多个,循环处理),有,就处理数据包,没有就返回。/////////////因为ServerSocket的接收消息未必和发送端对应,可能Client连续发送几包数据,Server才产生一次消息,也可能Client发送一次,Server产生多次消息,所以,用上面的逻辑能够安全处理这两种情况。 Object Pascal是独立的开发工具吗? 求一SQL语句 请教:ComboBox的问题? 关于QRDBText的问题!急!急!急 关于listbox上数据完整性的问题,请看一下俺理解的是不是对 如何改变TImage控件Canvas的ClipRect的大小 BUTTON与上,下,左,右键的冲突 如何让dbgrid的纪录显示颜色?? 请问在ACCESS中做的报表,在DELPHI中可以调用吗 如何在屏幕上画矩形的图形 (和DrawFocusRect一样能覆盖其他程序) 实参和形参 在DLL中动态创建的按钮为什么得不到它的名字呢???sender是空值????
1、建立一个全局的循环队列,用来存放接受的报文。
2、接收的时候,读取所有的数据SocketReceiveBuf(buf,MaxLen),写入到队列。
3、处理队列,看看队列里是否有完整的数据包(可能有多个,循环处理),有,就处理数据包,没有就返回。/////////////因为ServerSocket的接收消息未必和发送端对应,可能Client连续发送几包数据,Server才产生一次消息,也可能Client发送一次,Server产生多次消息,所以,用上面的逻辑能够安全处理这两种情况。