您的位置:程序门 -> .net技术 -> c#



高分求解,socket发送文件,应该如何设计通信协议?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


高分求解,socket发送文件,应该如何设计通信协议?
发表于:2008-01-21 16:58:15 楼主
socket发送文件,应该如何设计通信协议?

socket以流的方式把数据发送出去,

比如:我要发送一文件(data.txt),在发送此文件数据流时还要发送文件名及此文件的长度,

不然对方收到时不知道用什么文件名来存储,

发送数据时我们要如何组织数据,在收到数据时,我们应该如何把数据还原成有效的格式。。。?

双方的通信存在着一种协议,小弟思来想去都找不到方法,

来此请教高手们!
发表于:2008-01-21 17:04:181楼 得分:0
结构体序列化后发送就行了吧
发表于:2008-01-21 17:10:542楼 得分:0
如果一个对象序列化,序列化后的东西会比原来的大,增加流量,

虽然简单,但不是一个好方法!

发表于:2008-01-21 17:55:063楼 得分:0
如果一个对象序列化,序列化后的东西会比原来的大,增加流量,

虽然简单,但不是一个好方法!  
===================
你以为你加头加尾之后就不会比原来大?
发表于:2008-01-21 18:09:194楼 得分:0
关注.....中
发表于:2008-01-21 18:14:575楼 得分:0
3楼的兄弟,

序列化后的体积是成倍地在增长
发表于:2008-01-22 09:47:436楼 得分:0
顶起
发表于:2008-01-22 09:58:357楼 得分:0

简易协议


文件名长度   int       4字节
文件名           char     根据文件名长度决定
文件长度       long     8字节
文件本身       byte     根据文件长度决定


处理时先接收到4个字节,转成int后,再根据这个数值接收文件名。
再接收8字节,转成long后,再根据这个数值接收byte,最后写成文件就ok了。
发表于:2008-01-22 10:50:048楼 得分:0
不存在序列化的问题。。因为你本身就是文件。你可以参考开源的即时通讯软件,,开源msn等。
发表于:2008-01-22 11:19:529楼 得分:0
想怎样设计就怎样设计,最好有扩展方式...扩展方式设置在包头里,一个大一点的包体就ok.序列化net里不怎好用.没有c++好.都是应用协议....随便设计了.
发表于:2008-01-22 11:31:5810楼 得分:0
文件还序列化什么?
先发一个头定义[文件名,长度,每次多少字节]
再分批发文件内容.
其实就是你自己定义一个协议而已.
发表于:2008-01-22 11:35:0511楼 得分:0
友情mark一下


快速检索

最新资讯
热门点击