W whether_bobo Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #1 数据格式如:|数据长度(8byte)|数据内容(不定长)| 怎样用 serversocket clientsocket传输
W whether_bobo Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #4 关键是不定长,接收的时候我的buffer不能一次接收完,所以要分几次收 可是我怎么知道数据的内容全部收完了,哪次是最后一次
D djdsz Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #5 数据头重新定义, DataHead=Record DataLen:word; pkgNm :word; isEnd :Boolean; end; 然后将每个包的头部加上头记录。
W whether_bobo Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #6 能不能再解释的清楚一些,怎么把包加上头记录? 怎么知道数据的内容全部收完了,哪次是最后一次? 谢谢
L lujr Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #7 我想你应该这样做: 1。第一次送总长度。 2。数据发送时在头上加上长度,当然是固定长的,比如前12位表示本次发送的数据长度。, 3。接收方根据总长度及每次收到的长度来确定是否接收完毕!
W whether_bobo Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #8 我测试使用sendbuf,recievebuf 可是每次revievelength总和肯定大于我要传送的数据长度 不知哪里有问题 revievelength是否就是我每次传送数据的长度?
D djdsz Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #9 Datalen:本次数据长度 pkgNm :本次数据包编号 isEnd :是否结束数据包
W whether_bobo Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #10 哦,你们理解错了 发送方并不是分开发送,而是一次发送所有数据 接收方只能知道总的数据长度
D DiamondKing Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #11 将数据写到Buf,array of byte数组. 然后发送. 接收时. copyMemory(@Dest[Position],@Buf[Position,Len)
L lujr Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #13 winsock在发送数据时会自动打包的,好象是一次送76K吧! 那你接收的时候判断一下长度不就行了吗?
D DiamondKing Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-21 #15 Clientsocket.read事件中: len:=Socket.receiveLength; 除去前8位,那后面不是你的变长数据的长度吗?