client和server连起来后,client向server send数据
send的数据非常快,server端使用onreceive来监控接受,每次接受后显示到编辑框
本来计划是每次send后server端receive一个对应的字符串,现在由于client的发送速度太快
server端receive到的是好几个client端发送字符串拼起来的字符串这种现象是否正常,要怎么解决才能让一个client发送对应一个server接收,而不是几个client发送拼起来成一个server接收?

解决方案 »

  1.   

    楼主的问题应该是Socket粘包的问题
    你可以网上查查解决办法
      

  2.   

    这种现象是正常的。所有的传输问题(发送时间、发送大小)是TCP来解决的,这个你没法干预。
    想要一一对应,你必须在定义好结构。给你两个建议:一、发送定长的数据。
        当然,你接受的时候也得定长接收。例如你每次发50字节,而接收端某一时刻到达了140字节(这个是可能的,因为如何组包是传输层的事情,你没法干预),于是你依然只Recv 50字节。二、发送带“消息头”的数据。(消息头中要带有消息长度信息)
        这个思想和上面基本一样,就是你这次发多少,你要先告诉对方,对方先收消息头,再根据消息头去判断“下次该收多少”。
      

  3.   

    在 服务端定义一个 CSocketClient类的数组或array 来接收客户连接