Socket数据包解析

jiaoshiyao 2014-05-22 11:25:30
RT
Socket发送一次数据 据说要有 一个起始标记 一个结束标记

这个在客户端怎么接受啊

比如一次数据1000个字节 连续发了两次 也就是2000个字节了 是两个结果

客户端 的接受方法是
var data = new byte[100];一次就接受100个
while()
{
int len = Socket.Receiver(data);
}
怎么解析 !!!
...全文
1145 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmg494005678 2014-05-22
  • 打赏
  • 举报
回复
根据你定义的协议规则来解析啊
WM_JAWIN 2014-05-22
  • 打赏
  • 举报
回复
这需要你协定一个包的定义。采用TCP的会按发送顺序到达,如果用UDP,顺序可能是乱的
wmg494005678 2014-05-22
  • 打赏
  • 举报
回复
你所谓的1000个字节发送2次,实际上是你的一厢情愿的认为,Socket在发送的时候默认是有一个缓冲区的,等缓冲区满了的时候才会发送,比如缓冲区大小是1500,你先发送1000,这个时候1000在缓冲区里面,并没有发送,等你发送第二个1000的时候,缓冲区里面1500满了,发送,还剩下500,你关注的就是你这个消息的结构是什么,如何定义
於黾 2014-05-22
  • 打赏
  • 举报
回复
自己做数组拼接吧.
jiaoshiyao 2014-05-22
  • 打赏
  • 举报
回复
难道 你规定一个请求 数据不能大于10000 那文件怎么传。。。
jiaoshiyao 2014-05-22
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
引用 4 楼 jiaoshiyao 的回复:
[quote=引用 3 楼 sunny906 的回复:] 要么在发送1000个字节的数据时,分10次分送,一次发送100个字节;要么把接收时候的缓冲区长度设置为1000
重点是什么?
重点就是,所谓协议,必须是收的人知道发的人发的东西是什么. 我冲你眨眼睛,眨到流眼泪了,你还看不懂,我眨的有意义么? 必须协商好,我发给你1000个字节,都是什么,又发给你1000字节,又是什么.然后你也要对应的1000个字节1000个字节的去处理. 我发给你1000个,你只收100个,你是要闹哪样啊.[/quote] 不可能直接使用1000个来接受 万一 对面传来的一个包有10000个字节呢 要是传过来的是一个4G的文件呢 我不可能创建一个4G的数组来接受 我默认接的个数是65535个 但是 数据量大的时候 65535个不够用
於黾 2014-05-22
  • 打赏
  • 举报
回复
引用 4 楼 jiaoshiyao 的回复:
引用 3 楼 sunny906 的回复:
要么在发送1000个字节的数据时,分10次分送,一次发送100个字节;要么把接收时候的缓冲区长度设置为1000
重点是什么?
重点就是,所谓协议,必须是收的人知道发的人发的东西是什么. 我冲你眨眼睛,眨到流眼泪了,你还看不懂,我眨的有意义么? 必须协商好,我发给你1000个字节,都是什么,又发给你1000字节,又是什么.然后你也要对应的1000个字节1000个字节的去处理. 我发给你1000个,你只收100个,你是要闹哪样啊.
於黾 2014-05-22
  • 打赏
  • 举报
回复
发送和接收长度不一致,有什么必要么?为什么非要如此设计?
jiaoshiyao 2014-05-22
  • 打赏
  • 举报
回复
引用 3 楼 sunny906 的回复:
要么在发送1000个字节的数据时,分10次分送,一次发送100个字节;要么把接收时候的缓冲区长度设置为1000
重点是什么?
sunny906 2014-05-22
  • 打赏
  • 举报
回复
要么在发送1000个字节的数据时,分10次分送,一次发送100个字节;要么把接收时候的缓冲区长度设置为1000

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧