打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用TcpLister和TcpClient进行文件传输
userphoto

2017.03.12

关注

http://www.cnblogs.com/bianlan/archive/2012/08/10/2632349.html

启动监听和接收文件的代码如下:

TcpListener listener;

#region
服务器启动监听服务,并开始接收文件 private void btnBegin_Click(object sender, EventArgs e) { btnBegin.Enabled = false; listener = new TcpListener(IPAddress.Parse(txtIp.Text), int.Parse(txtPort.Text)); listener.Start(); ShwMsgForView.ShwMsgforView(lstbxMsgView, "服务器开始监听"); Thread th = new Thread(ReceiveMsg); th.Start(); th.IsBackground = true; } public void ReceiveMsg() { while (true) { try { int size = 0; int len = 0; TcpClient client = listener.AcceptTcpClient(); if (client.Connected) { //向列表控件中添加一个客户端的Ip和端口,作为发送时客户的唯一标识 listbOnline.Items.Add(client.Client.RemoteEndPoint); ShwMsgForView.ShwMsgforView(lstbxMsgView, "客户端连接成功" + client.Client.RemoteEndPoint.ToString()); } NetworkStream stream = client.GetStream(); if (stream != null) { SaveFileDialog sfd = new SaveFileDialog(); if (sfd.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { string fileSavePath = sfd.FileName;//获得用户保存文件的路径 FileStream fs = new FileStream(fileSavePath, FileMode.Create, FileAccess.Write); byte[] buffer = new byte[512]; while ((size = stream.Read(buffer, 0, buffer.Length)) > 0) { fs.Write(buffer, 0, size); len += size; } fs.Flush(); stream.Flush(); stream.Close(); client.Close(); ShwMsgForView.ShwMsgforView(lstbxMsgView, "文件接受成功" + fileSavePath); } } } catch(Exception ex) { ShwMsgForView.ShwMsgforView(lstbxMsgView, "出现异常:" + ex.Message); } } } #endregion

客户端选择文件后,即可直接发送文件:

客户端代码如下:

        //使用TcpLister和TcpClient向服务端发送文件        private void button1_Click(object sender, EventArgs e)        {            TcpClient client = new TcpClient();                       client.Connect(IPAddress.Parse(txtIp.Text), int.Parse(txtPort.Text));            NetworkStream ns = client.GetStream();            FileStream fs = new FileStream(txtFileName.Text, FileMode.Open);            int size = 0;//初始化读取的流量为0               long len = 0;//初始化已经读取的流量               while (len < fs.Length)            {                byte[] buffer = new byte[512];                size = fs.Read(buffer, 0, buffer.Length);                ns.Write(buffer, 0, size);                len += size;                //Pro((long)len);               }            fs.Flush();            ns.Flush();            fs.Close();            ns.Close();            ShowMgs(txtFileName.Text + "文件发送成功");        }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#线程系列讲座(3):线程池和文件下载服务器
C#中文件和byte[]互换问题
c#文件读写相关类介绍
上传图片检测其是否为真实的图片 防范病毒上传至服务器
C#读写文件
C#通过WebService方式IIS发布网站上传文件到服务器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服