社区
C#
帖子详情
c#下用socket传输
flytigerme
2010-11-06 03:55:15
用tcplistener和tcpclient,如果我要传送一个文件,和文件名,如何在同一次流传输中将2者都发送过去,接收端又如何识别流的哪一段是文件名,哪一段是文件?
...全文
140
6
打赏
收藏
c#下用socket传输
用tcplistener和tcpclient,如果我要传送一个文件,和文件名,如何在同一次流传输中将2者都发送过去,接收端又如何识别流的哪一段是文件名,哪一段是文件?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
phil999
2010-11-06
打赏
举报
回复
[Quote=引用 2 楼 sp1234 的回复:]
我是P哥!?
[/Quote]
对,你就是P哥
pedcode
2010-11-06
打赏
举报
回复
分段发送 记录字节大小
以专业开发人员为伍
2010-11-06
打赏
举报
回复
哦,sorry,修改一下举例的实体定义:
public class MyTransferDatas
{
public string[] FileNames;
public List<byte[]> FileBytes;
}
呵呵,随手的。我只强调设计方法,并没有去想给你抄代码。所以.....
以专业开发人员为伍
2010-11-06
打赏
举报
回复
再早期的协议,可能用一个枚举值来表达类型,而不是像我上面这样“奢侈”地使用128字节。但是其它部的概念基本上是一样的,就是任何协议大概都会分为“消息头”和“消息体”两部分,消息头传递固定的简单格式的信息内容,而消息体则传递需要更进一步解析的内容。
以专业开发人员为伍
2010-11-06
打赏
举报
回复
我是P哥!?
简单的关于协议的东西也许说着玄乎,举个(更适合最近几年的协议的)例子:如果你有一个对象其类型是这样定义的:
public class MyTransferDatas
{
public string[] FileNames;
public byte[] FileBytes;
}
其中第一个数组标记了多个文件,第二个数组标记了对应每一个文件的内容(每一个字节),那么当你new一个这样的对象并传递时,可以这样组织数据:
第1~128字节,保存这个类型的全名称,Encoding.Utf8.Getbytes来获得byte[]值。
之后的字节,保存这个对象的二进制序列化内容,BinaryFormatter.Serialize来获得byte[]值。
把这样的两个数据以Array.Copy方式写到一个buffer中,然后send给tcpclistener端,接收端首先读取类型全名称,然后反序列化之后的字节成为MyTransferDatas对象实例,也就知道传递什么了。
实际上我用这个例子要说明的是一个通用的设计。这里你可以传递任意实体对象,只要预先把实体类型放到一个工程中并且让c/s两端的程序都引用它就行了(保证两端都知道序列化、反序列化的类型)。
不过还有一点补充。其实单就这个设计来说,是不够的。因为我们不知道文件的大小,而我们不论客户端还是服务器端都需要较好的反应速度,网络也需要,所以实用真正程序传递的数据不应该太大。当
重构
这个设计时,其实应该修改为仅仅传递相应文件中一块数据,例如给出每一个数据块在文件中的起点字节数(实际上还需要给出每一个文件总的字节数)。这同时也可以实现断点续传。
phil999
2010-11-06
打赏
举报
回复
socket 传输的是字节流,怎么解释这个流要自己定义
C#
socket
大文件
传输
分段
传输
C#
DEMO
C#
socket
大文件
传输
分段
传输
C#
DEMO
c#
socket
传输
文件
c#
socket
传输
文件,
c#
socket
传输
文件,
c#
socket
传输
文件
C#
多线程和
Socket
网络编程精讲
【教学理念】 1、把“需要工作的人”变成“工作需要的人” 2、创设“立足学生、突出项目、强化技术、提高能力”的教学局面。 【课程特色】 1、课程设计循序渐进、讲解细致、通俗易懂、非常...
C#
SOCKET
大文件
传输
.zip
C#
实现的
SOCKET
大文件
传输
,支持高并发,断点续传等,是学习
SOCKET
通信的经典案例,走过路过不要错过!!!!!!
C#
Socket
文件
传输
简单例子(将文件名和文件同时
传输
)
C#
Socket
文件
传输
,将文件名和文件保存到一个byte[]中
传输
,再通过解析获取文件名和文件保存到本地文件夹中
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章