首页 新闻 会员 周边

请教.NET Socket异步通信的一个问题

0
悬赏园豆:15 [已关闭问题]

如果需要传送的数据包较大,需要在发送端进行拆分,在接收端进行组合,请教一个解决方案实现拆分和组合。

火舞曜阳的主页 火舞曜阳 | 初学一级 | 园豆:20
提问于:2010-07-02 16:09
< >
分享
其他回答(5)
0
dudu | 园豆:30994 (高人七级) | 2010-07-02 17:37
0

对发送方来说,读一段发送一送;对接受方来说读一段,写一段;不用这么麻烦吧。

活眼神算 | 园豆:312 (菜鸟二级) | 2010-07-02 17:50
0

如果你用TCP协议,发送端是不用拆包的,TCP 协议会帮你做这个事情。如果你不怕麻烦,你就用滑动窗口协议自己实现,其实TCP协议就是滑动窗口协议,而且是双工的。滑动窗口协议怎么实现,你自己到网上去搜。

eaglet | 园豆:17139 (专家六级) | 2010-07-02 18:53
0

    eaqqlet说得对,如果用TCP协议,发送端不用拆包的,TCP是面向连接的,只在连接存在,发送端就可以一直发送,再说,用TCP传文件不会发生丢包,适合重要文件的传输。这是UDP无法比的。

X教授 | 园豆:240 (菜鸟二级) | 2010-09-20 12:51
0

你是想做通信协议吧? 你可以自己订立一套协议 协议头协议头 由几个字节组成 然后你的IO接受到字节之后 根据协议头就是头几个字节来解析出一个完整的包 然后在将包放入你自己订立的消息队列 然后由另外一个线程负责从 消息队列中取出 消息 然后在发送给接受的人 这其中你不能做到 比如你如果要发送一个1G的包 服务端就一直等待你把这1G的包全都缓存到内存中然后再发送出去 这个事情必须由 发送端用逻辑将包拆解成小的包 然后一个一个的发送给服务端 服务端 只是将包发给接收人

傻瓜力量大 | 园豆:260 (菜鸟二级) | 2011-12-06 11:29
0

不知道你有木有听说过有个叫GZIP的技术,他是在发送端将所有的数据整合压缩成一个小包,通过TCP/IP进行传输后到客户端再自动解压,获取数据,这样会很大的提高数据的传输速度。

胥健 | 园豆:151 (初学一级) | 2011-12-06 15:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册