关于internet下的c/s系统的若干问题(200分)

  • 主题发起人 sandyhappy
  • 开始时间
S

sandyhappy

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个系统,使用INDY的tcpserver和tcpclient进行网络编程的,采用阻塞模式
现有些问题想请教大家
自己定义了部分数据包的格式,用来识别不同的命令
数据包中包括整个数据包的长度,及其他相关信息
1、如果客户端按照格式发送了100个字符长度的数据包,在传输过程中,由于网络中的问题(比如网络速度过慢
丢包,客户端异常中断),服务器只收到50个数据包,但是根据收到数据包中指定长度,应该收取100个
但是后面50个根本不会再传来,这时如果有其他数据包传来的时候,则把第二个数据报的前50个字符当作上一个
数据包来处理,那么势必造成数据的混乱和部分数据的丢失(在阻塞模式下)。该问题如何解决
2、在客户端异常退出以后,indy的tcpserver好像无法检测到对方的断开事件,也就无法触发disconnect事件,
(我做过相关的实验),当客户端异常断开,或者由于网络中断,如何在服务器端作出检测,释放相关资源
是不是必须要在服务器和客户端之间不停地发送链路检测数据包?
3、indy控件能否在非阻塞模式下工作?
请大家多多指教
 
indy控件能在非阻塞模式下工作
 
如何工作?我用的是delphi6下的indy8.0
是不是用那个什么iohandle
 
顶部