c# winform下如何实下局域网文件的上传下载功能
如何实现局域网中文件的上传下载功能及对应得从一台机子易做图问服务器上的文件winform c/s结构模式
在线等 我的msn:qiufa_68@hotmail.com
邮箱qiufa_68@163.com
能帮忙解决者请速与我联系,立马给分 --------------------编程问答-------------------- 能帮忙解决者请速与我联系,立马给分
给分也不联系 --------------------编程问答-------------------- 俺有局域网传文件源码
是一个局域网QQ的功能之一
http://www.cnblogs.com/tuyile006/archive/2006/12/30/607823.html --------------------编程问答-------------------- 建议用remoting建产文档服务,以Stream传输,实现简单,一个类就OK
remoting在局域网性能好 --------------------编程问答-------------------- 用socket也比较好, --------------------编程问答-------------------- 望各位高手,详细指点下,小弟比较笨 若有源码 发小弟一份
qiufa_68@163.com --------------------编程问答-------------------- 关于remoting服务如果构建在.net的快速入门(好像需要手动安装)里有完整的内容,MSDN里也可以查到,文件流的处理看下System.IO.File
当然也可以用socket实现,MSND里也有socket实现的相关内容 --------------------编程问答-------------------- 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
--------------------编程问答-------------------- up --------------------编程问答-------------------- 我已经研究好ftp了,结帖! --------------------编程问答-------------------- --------------------编程问答-------------------- 建议你用ftp的方式处理。 --------------------编程问答-------------------- up ..
补充:.NET技术 , C#