socket tcp 文件传输 速度慢

wangzhe1945 2008-12-29 05:18:05
socket tcp 文件传输 速度慢,主要代码如下

void ReceiveFile()
{
const int length = 1024;
FileStream filestream = new FileStream(filetemp, FileMode.OpenOrCreate, FileAccess.Write);
NetworkStream ns = new NetworkStream(socket);
byte[] buffer = new byte[length];
long haveRead = 0;
//把流的信息写入新文件中
while (haveRead <filelength)
{
int size = ns.Read(buffer, 0, length);
filestream.Write(buffer, 0, size);
filestream.Flush();
if (size > 0)
{
haveRead += Convert.ToInt64(size);
}
}
filestream.Close();
}

public void SendFile(Socket socket, string filename)
{
NetworkStream stream = new NetworkStream(socket);
try
{
FileStream filestream = new FileStream(filename, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024];

filestream.Seek(0, SeekOrigin.Begin);
int number = 0;
while ((number = filestream.Read(buffer, 0, 1024)) != 0)
{
stream.Write(buffer, 0, number);
stream.Flush();
Console.WriteLine(filestream.Position);
}
filestream.Close();
stream.Close();
}
catch (Exception ex)
{
Log.Write(ex.Message);
}
finally
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}

大家帮我看看哈 ,在局域网的速度只有每秒0.5M ,速度实在是有点低。
...全文
1659 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhe1945 2008-12-31
  • 打赏
  • 举报
回复
谢谢各位高手,把发送的缓冲区从1024改为1024 * 100后,果然速度大增!!提高了N倍。
GTX280 2008-12-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cnzdgs 的回复:]
发送时,每次读文件不要只读1KB,建议每次读1MB以上,可以分多次来发送。
接收时,把缓冲区开大一些,多次接收后累计到一定程度后一次写入文件。
发送和接收都不要Flush。
[/Quote]
cnzdgs 2008-12-30
  • 打赏
  • 举报
回复
发送时,每次读文件不要只读1KB,建议每次读1MB以上,可以分多次来发送。
接收时,把缓冲区开大一些,多次接收后累计到一定程度后一次写入文件。
发送和接收都不要Flush。
wangzhe1945 2008-12-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 GTX280 的回复:]
参考
http://topic.csdn.net/t/20050218/22/3791018.html#
[/Quote]

那是个无分帖,实在看不出谁说得对,我用的是同步socket,但是是独立线程,这是否有影响?或者改变发送和接收的 buffer size?
bbbbbb888888 2008-12-30
  • 打赏
  • 举报
回复
const int length = 1024;
改成 const int length = 1024 * 100;
速度会快很多.
wangzhe1945 2008-12-30
  • 打赏
  • 举报
回复
自己顶
GTX280 2008-12-29
  • 打赏
  • 举报
回复
kingcsx666 2008-12-29
  • 打赏
  • 举报
回复
帮顶
homejiji 2008-12-29
  • 打赏
  • 举报
回复
socket的sendbuffsize和receivebuffsize都设置的多大??
如果设置不当会影响速度的。。
本身网络是否有问题从而限制了速度呢?

111,131

社区成员

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

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

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