c# winform下如何实下局域网文件的上传下载功能 俺有局域网传文件源码是一个局域网QQ的功能之一http://www.cnblogs.com/tuyile006/archive/2006/12/30/607823.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 建议用remoting建产文档服务,以Stream传输,实现简单,一个类就OKremoting在局域网性能好 望各位高手,详细指点下,小弟比较笨 若有源码 发小弟一份[email protected] 关于remoting服务如果构建在.net的快速入门(好像需要手动安装)里有完整的内容,MSDN里也可以查到,文件流的处理看下System.IO.File当然也可以用socket实现,MSND里也有socket实现的相关内容 建议用remoting建产文档服务,以Stream传输 private void button2_Click(object sender, System.EventArgs e) { try { if(openFileDialog1.ShowDialog() == DialogResult.OK) { txtLocation.Text = openFileDialog1.FileName; } } catch(Exception exc) { // MessageBox.Show(exc.Message, "提示"); listBox1.Items.Add(exc.Message); } } private void button1_Click(object sender, System.EventArgs e) { try { ipAddress = IPAddress.Parse(txtIP.Text); port = Int32.Parse(txtPort.Text); ipEndPoint = new IPEndPoint(ipAddress, port); /// udpClient = new UdpClient(ipEndPoint); // 建立UDP连接 udpClient = new UdpClient(Dns.GetHostByAddress(ipAddress).HostName, port); /// udpClient.Connect(ipEndPoint); fs = new FileStream(txtLocation.Text, FileMode.Open, FileAccess.Read); // 判断是否长度超过8K最大允许值 if(fs.Length > 8192) { listBox1.Items.Add("本版本文件传输程序传输大小必须小于8192字节!"); fs.Close(); udpClient.Close(); return; } // 如果成功发送文件信息给接收端,则继续发送文件的内容给接收端 if(SendFileInfo()) { Thread.Sleep(2000); // 等待2秒钟 SendFile(); // 发送文件 udpClient.Close(); fs.Close(); } }// catch(SocketException se)// {// listBox1.Items.Add(se.Message +"0");// } catch(Exception exc) { // MessageBox.Show(exc.Message, "提示"); listBox1.Items.Add(exc.Message +"1"); } } public class FileDetails { public string FILETYPE = ""; public long FILESIZE = 0; } // 发送文件的信息,包括文件的类型以及它的大小 private bool SendFileInfo() { try { // fileDet.FILETYPE = fs.Name.Substring((int)fs.Name.Length - 3, 3); FileSystemInfo fileInfo = new FileInfo(txtLocation.Text); // 获得文件的扩展名 fileDet.FILETYPE = fileInfo.Extension; // 获得文件的长度 fileDet.FILESIZE = fs.Length; XmlSerializer fileSerializer = new XmlSerializer(typeof(FileDetails)); MemoryStream stream = new MemoryStream(); fileSerializer.Serialize(stream, fileDet); stream.Position = 0; byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, Convert.ToInt32(stream.Length)); // 发送文件的细节/// udpClient.Send(bytes, bytes.Length, ipEndPoint); udpClient.Send(bytes, bytes.Length); listBox1.Items.Add("文件正在发送中..."); stream.Close(); return true; } catch(Exception exc) { listBox1.Items.Add(exc.Message); return false; } } private void SendFile() { try { // 创建文件流 byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); listBox1.Items.Add("发送的文件大小是: " + fs.Length + "字节"); // 发送文件/// udpClient.Send(bytes, bytes.Length, ipEndPoint); udpClient.Send(bytes, bytes.Length); listBox1.Items.Add("文件成功发送!"); } catch(Exception exc) { listBox1.Items.Add(exc.Message);// MessageBox.Show(exc.Message); } } private void button1_Click(object sender, System.EventArgs e) { try { // 改变按钮控件的状态 UpdateControls(false); udpClient = new UdpClient(Int32.Parse(txtPort.Text)); threadReceive = new Thread(new ThreadStart(ReceiveMessages)); threadReceive.Start();/// GetFileDetails();/// ReceiveFile(); } catch(Exception exc) { listBox1.Items.Add(exc.Message); } } private void ReceiveMessages() { while(true) { GetFileDetails(); ReceiveFile(); } } // 停止服务 private void button2_Click(object sender, System.EventArgs e) { try { UpdateControls(true); txtIP.Text = ""; threadReceive.Abort(); if(fs != null) fs.Close(); udpClient.Close(); } catch(Exception exc) { listBox1.Items.Add(exc.Message); } } public class FileDetails { public string FILETYPE = ""; public int FILESIZE = 0; } private void GetFileDetails() { try { listBox1.Items.Add("开始等待文件细节..."); receiveBytes = udpClient.Receive(ref ipEndPoint); txtIP.Text = ipEndPoint.Address.ToString(); listBox1.Items.Add("读取文件细节"); XmlSerializer fileSerializer = new XmlSerializer(typeof(FileDetails)); MemoryStream stream = new MemoryStream(); stream.Write(receiveBytes, 0, receiveBytes.Length); stream.Position = 0; fileDet = (FileDetails)fileSerializer.Deserialize(stream); listBox1.Items.Add("接收到的文件其类型是: " + fileDet.FILETYPE + "其大小是: " + fileDet.FILESIZE.ToString() + "字节"); } catch(Exception exc) { listBox1.Items.Add(exc.Message); } } 我放到我的WEB上去,你自己去复制吧.www.netbor.net 请求,C++转C# 设置一个快捷键 怎样在泛型类型参数的对象上进行四则运算? gridview的问题 我请问一个关于DATAGRID的问题 未找到反序列化构造函数(高分求救) TO:若尘,请教您关于科华动态报表使用问题 各位大虾 介绍一个好的C#网站 有书籍和解决案例的 关于web调用出现的代码问题!请指点! 请问哪里有免费的空间上传! 在winform里内嵌了webbrowser控件,用webbrowser打开excel文件遇到几个问题(在线等) 如何随机选择颜色?
remoting在局域网性能好
[email protected]
{
try
{
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtLocation.Text = openFileDialog1.FileName;
}
}
catch(Exception exc)
{
// MessageBox.Show(exc.Message, "提示");
listBox1.Items.Add(exc.Message);
}
} private void button1_Click(object sender, System.EventArgs e)
{
try
{
ipAddress = IPAddress.Parse(txtIP.Text);
port = Int32.Parse(txtPort.Text);
ipEndPoint = new IPEndPoint(ipAddress, port);
/// udpClient = new UdpClient(ipEndPoint); // 建立UDP连接
udpClient = new UdpClient(Dns.GetHostByAddress(ipAddress).HostName, port);
/// udpClient.Connect(ipEndPoint);
fs = new FileStream(txtLocation.Text, FileMode.Open, FileAccess.Read); // 判断是否长度超过8K最大允许值
if(fs.Length > 8192)
{
listBox1.Items.Add("本版本文件传输程序传输大小必须小于8192字节!");
fs.Close();
udpClient.Close();
return;
}
// 如果成功发送文件信息给接收端,则继续发送文件的内容给接收端
if(SendFileInfo())
{
Thread.Sleep(2000); // 等待2秒钟
SendFile(); // 发送文件
udpClient.Close();
fs.Close();
}
}
// catch(SocketException se)
// {
// listBox1.Items.Add(se.Message +"0");
// }
catch(Exception exc)
{
// MessageBox.Show(exc.Message, "提示");
listBox1.Items.Add(exc.Message +"1");
}
} public class FileDetails
{
public string FILETYPE = "";
public long FILESIZE = 0;
} // 发送文件的信息,包括文件的类型以及它的大小
private bool SendFileInfo()
{
try
{
// fileDet.FILETYPE = fs.Name.Substring((int)fs.Name.Length - 3, 3);
FileSystemInfo fileInfo = new FileInfo(txtLocation.Text);
// 获得文件的扩展名
fileDet.FILETYPE = fileInfo.Extension; // 获得文件的长度
fileDet.FILESIZE = fs.Length; XmlSerializer fileSerializer = new XmlSerializer(typeof(FileDetails));
MemoryStream stream = new MemoryStream(); fileSerializer.Serialize(stream, fileDet); stream.Position = 0;
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, Convert.ToInt32(stream.Length));
// 发送文件的细节
/// udpClient.Send(bytes, bytes.Length, ipEndPoint);
udpClient.Send(bytes, bytes.Length);
listBox1.Items.Add("文件正在发送中...");
stream.Close();
return true;
}
catch(Exception exc)
{
listBox1.Items.Add(exc.Message);
return false;
}
} private void SendFile()
{
try
{
// 创建文件流
byte[] bytes = new byte[fs.Length]; fs.Read(bytes, 0, bytes.Length); listBox1.Items.Add("发送的文件大小是: " + fs.Length + "字节"); // 发送文件
/// udpClient.Send(bytes, bytes.Length, ipEndPoint);
udpClient.Send(bytes, bytes.Length);
listBox1.Items.Add("文件成功发送!");
}
catch(Exception exc)
{
listBox1.Items.Add(exc.Message);
// MessageBox.Show(exc.Message);
}
}
{
try
{
// 改变按钮控件的状态
UpdateControls(false);
udpClient = new UdpClient(Int32.Parse(txtPort.Text));
threadReceive = new Thread(new ThreadStart(ReceiveMessages));
threadReceive.Start();
/// GetFileDetails();
/// ReceiveFile();
}
catch(Exception exc)
{
listBox1.Items.Add(exc.Message);
}
} private void ReceiveMessages()
{
while(true)
{
GetFileDetails();
ReceiveFile();
}
} // 停止服务
private void button2_Click(object sender, System.EventArgs e)
{
try
{
UpdateControls(true);
txtIP.Text = "";
threadReceive.Abort();
if(fs != null)
fs.Close();
udpClient.Close();
}
catch(Exception exc)
{
listBox1.Items.Add(exc.Message);
}
} public class FileDetails
{
public string FILETYPE = "";
public int FILESIZE = 0;
} private void GetFileDetails()
{
try
{
listBox1.Items.Add("开始等待文件细节..."); receiveBytes = udpClient.Receive(ref ipEndPoint);
txtIP.Text = ipEndPoint.Address.ToString();
listBox1.Items.Add("读取文件细节"); XmlSerializer fileSerializer = new XmlSerializer(typeof(FileDetails));
MemoryStream stream = new MemoryStream(); stream.Write(receiveBytes, 0, receiveBytes.Length);
stream.Position = 0; fileDet = (FileDetails)fileSerializer.Deserialize(stream);
listBox1.Items.Add("接收到的文件其类型是: " + fileDet.FILETYPE + "其大小是: " + fileDet.FILESIZE.ToString() + "字节");
}
catch(Exception exc)
{
listBox1.Items.Add(exc.Message);
}
}
www.netbor.net