小
小城有我
Unregistered / Unconfirmed
GUEST, unregistred user!
用INDY10的TIdTCPServer做通讯服务端程序,客户端为硬件设备,请问服务端如何读取客户端数据?
我已进行了如下测试:
1. 在IdTCPServer的 OnExecute中读取,发现只有以$0A结束时才触发OnExecute事件,而且$0A不能读到,但我的下位机数据不确定,所以不能使用此方法
2. 另开一线程,用ReadBytes方式查询读取,但又碰到了一些问题,一是超时问题,一旦读取超时就报错,只好用 try..except,但调试时频频报错,很是不爽,最主要的是第二个问题,在调试时发现有些时候数据不能及时读到,例如:客户发送了一个字节比如 $AA ,ReadBytes读取不到,只有客户再发送了一个字节比如 $BB,这时ReadBytes 才将两个字节 $AA,$BB 一起读出,经过反复测试,偶尔会出现这种情况,不知是什么问题,该如何解决,另外我用ReadChar,ReadStream等方法读取测试,也会出现同样的问题,难道是INDY10的BUG?
请各位高手提供一个好的解决,不盛感激!
我已进行了如下测试:
1. 在IdTCPServer的 OnExecute中读取,发现只有以$0A结束时才触发OnExecute事件,而且$0A不能读到,但我的下位机数据不确定,所以不能使用此方法
2. 另开一线程,用ReadBytes方式查询读取,但又碰到了一些问题,一是超时问题,一旦读取超时就报错,只好用 try..except,但调试时频频报错,很是不爽,最主要的是第二个问题,在调试时发现有些时候数据不能及时读到,例如:客户发送了一个字节比如 $AA ,ReadBytes读取不到,只有客户再发送了一个字节比如 $BB,这时ReadBytes 才将两个字节 $AA,$BB 一起读出,经过反复测试,偶尔会出现这种情况,不知是什么问题,该如何解决,另外我用ReadChar,ReadStream等方法读取测试,也会出现同样的问题,难道是INDY10的BUG?
请各位高手提供一个好的解决,不盛感激!