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 ,速度实在是有点低。
{
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 ,速度实在是有点低。
如果设置不当会影响速度的。。
本身网络是否有问题从而限制了速度呢?
http://topic.csdn.net/t/20050218/22/3791018.html#
那是个无分帖,实在看不出谁说得对,我用的是同步socket,但是是独立线程,这是否有影响?或者改变发送和接收的 buffer size?
改成 const int length = 1024 * 100;
速度会快很多.
接收时,把缓冲区开大一些,多次接收后累计到一定程度后一次写入文件。
发送和接收都不要Flush。