首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于动作memoryStream

关于动作memoryStream
EN

Stack Overflow用户
提问于 2013-11-21 18:57:57
回答 1查看 91关注 0票数 0

我在互联网上找到这段代码,不明白服务器如何为客户端发送完整的文件大小,以及为什么客户端可以知道文件大小。帮助我回应:(

代码语言:javascript
复制
Code server: 
FileStream fs = null;
FileInfo fi = new FileInfo(textBox4.Text);
ulong fileSize = (ulong)fi.Length; 
byte[] buf = new byte[32 * 1024]; 
MemoryStream ms = new MemoryStream(buf);//
BinaryWriter bw = new BinaryWriter(ms);
bw.Write(fileSize);
fs = File.OpenRead(textBox4.Text); 
int ns = socket.Send(buf, sizeof(ulong), SocketFlags.None);//why only 32KB which client 
                                                       //can know file size  
ulong pos = 0;
while (pos < fileSize) 
{   int nr = fs.Read(buf, 0, buf.Length);
    if (nr <= 0) { break; } 
    pos += (ulong)nr;
    ns = socket.Send(buf, nr, SocketFlags.None); 
}

代码客户端:

代码语言:javascript
复制
FileStream fs = null; 
fs = File.Create(saveFileName); 
byte[] buf = new byte[32 * 1024]; 
int nr = socket.Receive(buf, sizeof(ulong), SocketFlags.None); 
MemoryStream ms = new MemoryStream(buf); 
BinaryReader br = new BinaryReader(ms); 
ulong fileSize = br.ReadUInt64(); 
ulong pos = 0; 
while (pos < fileSize)
{      nr = socket.Receive(buf);
   if (nr <= 0) { throw new Exception("Receive 0 byte"); } 
   pos += (ulong)nr; 
   fs.Write(buf, 0, nr); 
}
EN

回答 1

Stack Overflow用户

发布于 2013-11-21 19:02:20

服务器首先写入以下内容:

代码语言:javascript
复制
bw.Write(fileSize);

客户端首先读取以下内容:

代码语言:javascript
复制
ulong fileSize = br.ReadUInt64(); 

因此,客户端知道要跟多少个字节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20119033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档