我用以下两个实现了传送和接收,但所传送的文件都不能超过1024字节,请问怎样改才可以传送大于1024字节? 效果就象在internet下载任意大的文件?
或者可以用socket实现吗? 具体例子有吗? 先谢谢了.
这是发送的:
TcpClient tcpc = new TcpClient(textBox1.Text, 5656);
NetworkStream tcpStream = tcpc.GetStream();
StreamWriter reqStreamW = new StreamWriter(tcpStream);
FileStream fs = new FileStream("C:\\sql2ksp3\\MSDE\\setup.exe", FileMode.Open, FileAccess.Read);
BinaryReader fileReader = new BinaryReader(fs);
byte[] bytes = new byte[1024];
int hasRead;
while((hasRead = fileReader.Read(bytes, 0, bytes.Length)) != 0)
{
tcpStream.Write(bytes, 0, hasRead);
}
bytes = System.Text.Encoding.ASCII.GetBytes("<EOF>");
tcpStream.Write(bytes, 0, bytes.Length);
fileReader.Close();
这是接收的:
tcpl = new TcpListener(5656);
tcpl.Start();
while(listenerRun)
{
Socket s = tcpl.AcceptSocket();
Byte[] stream = new Byte[1024];
int i=s.Receive(stream) ;
string path = @"c:\setup.exe";
if (!File.Exists(path))
{
using (FileStream fs = File.Create(path)) {}
}
using (FileStream fs = File.OpenWrite(path))
{
Byte[] info = new System.Text.UTF8Encoding(true).GetBytes(stream);
fs.Write(stream, 0, i);
}
if (length>1024)
{
if ((length/size)*size<length)
page=length/size+1;
else
page=length/size;
for (int i=0;i<page;i++)
{
start=i*size;
if (i==page-1)
count=length-(i*size);
tcpStream.Write(bWrite,start,count); }
应该可以的,Tcp保证了数据的准确传输
你多次传输就行了。给我发消息告诉我email ,我给你段代码。