clientsocket发了1024*80 +1  bytes 的信息给serversocket,serversocket触发几次onclientwrite?每次分别是多少?怎么能判断整个8k数据接受结束了?

解决方案 »

  1.   

    sorry,
    应该是:
    怎么能判断整个80k+1数据接受结束了?
      

  2.   

    对了,是触发onclientread还是write?
      

  3.   

    那么怎么确定什么时候接受完毕了呢?
    socket.receivelength是本次触发onclientread接受的数据量还是整个80*1024+1bytes?怎么判断接受完毕呢?要自己定义协议?
      

  4.   

    |begin|fdasfklds;ajfdasjflsjalfjasjfdslkfajlasjf;sajfjdalkfjdslkajfdsajfldskajfdl;asjf;djafdsjafsdafjsa|end|将Message 的 数据头和数据尾设为一定的规格,尽量避免重复性即可OnRead的 时候 每次检测ReceiveMessage 的头部是否包含 |begin| ,或者检测尾部是否包含|end|,只要没有检测到尾部含有 |end| 就将接受的ReceiveMessage 全部累加到一个全局量中。
      

  5.   

    这样你怎么知道客户法的信息里面没有“begin”?
      

  6.   

    我用VC做了Socket的,我想触发的次数,应该是自己来管理,如果没有隐性触发也就是间接触发。 还有读入的数据要看设置的buff的大小了。
      呵呵,socket底手,只是建议
      

  7.   

    不用管几次吧,只要能把数据接受完就可以了,自己定义一下数据包的结构,在发送的时候把包的长度也作为包的一部分发过来
    eg:包头  |包的信息|包的长度|…………|…………|
        包体   数据
    接受后先把包头解开,然后判断recievelength和包的长度的大小,决定是否继续接受
      

  8.   

    Socket 8k 的瓶颈是无法排除的,但是我们可以
    1 把数据压缩,如果还大于8K 那么在采用 2-3
    2 把数据分割多次发送
    3 数据分割多线程同步发送