winform如何实现文件传输

yuliang2987780 2010-01-08 05:56:04
如题。。。两个用户之间如何达到文件的传送
...全文
320 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guyehanxinlei 2010-01-08
  • 打赏
  • 举报
回复
如果可以直接访问、连接,可以直接进行文件的传输
Socket实现
FTP
Email
.......
tianliang1 2010-01-08
  • 打赏
  • 举报
回复
用户间?
一般说来文件传输都要用Stream来实现...
看你的具体情况了,如果是同时操作系统,进行文件传输,类似于发邮件?
gao19870901 2010-01-08
  • 打赏
  • 举报
回复
有点难度,我新手
jayqean 2010-01-08
  • 打赏
  • 举报
回复
刚发的是发送方(夹带一进度条的显示) ,接收方类似
jayqean 2010-01-08
  • 打赏
  • 举报
回复
点对点传送(P2P)

/// <summary>
/// 定义委托
/// </summary>
/// <param name="m_t">文件大小</param>
/// <param name="m_p">当前位置</param>
public delegate void SendFileHandler(int m_t, int m_p);
/// <summary>
/// 定义事件,这个事件将被主线程捕捉,并对主线程 进度条进行修改。
/// </summary>
public event SendFileHandler m_SpFlHandler;

public void SendFile()
{
m_SpFlHandler += new SendFileHandler(ChgProgress);

Thread t = new Thread(StartSend);
t.Start();

}
//开始发送文件
public void StartSend()
{
//连接到对方客服端
p2pClient= this.GetP2PClient();
ns=p2pClient.GetStream();

FileStream fs = new FileStream(fullName, FileMode.Open, FileAccess.Read);
this.progressBar1.Visible = true;
this.label10.Visible = true;
int m_totalSize = 0;
int m_curPosition = 0;

//源文件大小
m_totalSize = (int)fs.Length;

byte[] bys = new byte[length];
while (true)
{
int read=fs.Read(bys, 0, bys.Length);
if (read <= 0)
{
break;
}

ns.Write(bys, 0, bys.Length);
ns.Flush();

m_curPosition += read;
this.label10.Text = string.Format("{0}%", (int)(m_curPosition*100/m_totalSize));
//触发事件
m_SpFlHandler(m_totalSize, m_curPosition);

Thread.Sleep(50);
}
this.progressBar1.Visible = false;
this.richTextBox2.Text += string.Format("文件:{0} 发送成功,(总大小:{1}KB)\r\n", fileName, (int)length / 1024);

this.richTextBox2.SelectionStart = this.richTextBox2.Text.Length;
this.richTextBox2.ScrollToCaret();
}

//改变进度条的值
private void ChgProgress(int m_t, int m_p)
{
progressBar1.Maximum = m_t;
progressBar1.Value = m_p;
}

hhc123 2010-01-08
  • 打赏
  • 举报
回复

filestream=new FileStream(richTextBox2.Lines[j-2].ToString(),FileMode.Open,FileAccess.Read);

//定义缓冲区
byte[] bb=new byte[1024];
//循环读文件

while((number=filestream.Read(bb,0,1024))!=0)
{//向客户端发送流
//sock.Send(bb,bb.Length,0);

stream.Write(bb,0,1024);
//刷新流
stream.Flush();

bb=new byte[1024];


}
bb=new byte[1024];
bb=System.Text.Encoding.ASCII.GetBytes("<EOF>");
sock.Send(bb);
stream.Flush();

filestream.Close();
//sock.Close();
stream.Close();


private void down(ref NetworkStream stream)
{
int length=1024;
byte[] bye=new byte[1024];

int tt=stream.Read(bye,0,length);

//下行循环读取网络流并写进文件
while(tt>0)
{




string ss=System.Text.Encoding.ASCII.GetString(bye);
int x=ss.IndexOf("<EOF>");
if(x!=-1)
{

filestream.Write(bye,0,x);
filestream.Flush();
break;
}
else
{
filestream.Write(bye,0,tt);
filestream.Flush();
}
tt=stream.Read(bye,0,length);

}//对用于while(!control)的“{”

filestream.Close();


MessageBox.Show("下载完毕!");
元宇宙之家 2010-01-08
  • 打赏
  • 举报
回复
C# Socket 转送 byte[](把文件读取成byte[])
十八道胡同 2010-01-08
  • 打赏
  • 举报
回复
可以通过读写本地文件

110,566

社区成员

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

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

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