关于Tserversocket接收数据的疑问,急急急!!!(100分)

  • 主题发起人 主题发起人 weiky
  • 开始时间 开始时间
W

weiky

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个程序中发现,若2个以上的client同时发送数据给server,
在ServerSocket1ClientRead函数里,会发现头几次的接收是几个client相互交错参杂在一起
的。我想知道的是,比如一个client发送一个4,5k的二进制包过来的时候,是不是完整的
连续的收到这个包,会不会出现这种情况,收到client1的头1k后,又收到client2的另外2k数据?
如果是这种情况,那该如何分拣组合数据。急急急!多谢了!
 
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
TCustomWinSocket *Socket不是指明了数据是由谁发送的么?

当你发送大数据包或连续发送小数据包时,Socket可能会引发多次接收事件或且
合并几次发送的小数据包,你自己在接收端合并就是了,这并没有什么困难.为每个连接
创建一个自定义结构的对象,在自定义结构对象中至少要有一个socket指明连接,一个
Stream或一个用于分配好的void *保存尚未处理的接收数据,其他的可以根据需要来确定

建议你server用阻塞线程,客户端用阻塞方式接收,实现并不困难,却可以大大提高服务器端
性能和接受连接能力,我测试的时候,服务器端接受了200多个连接,响应速度也还很不错.
 
server用阻塞线程,客户端用阻塞方式接收,怎么实现?
 
能否将你的程序公开,我很想知道是怎么实现的
 
后退
顶部