zoukankan      html  css  js  c++  java
  • C# Winform局域网传送文件

            //发送文件
            private void btn_sendFile_Click(object sender, EventArgs e)
            {
                //打开文件
                OpenFileDialog dlg = new OpenFileDialog();
    
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    //初始化接受套接字:寻址方案,以字符流方式和Tcp通信
                    socketSent = new Socket(AddressFamily.InterNetwork,
                           SocketType.Stream,
                           ProtocolType.Tcp);
    
                    //设置服务器IP地址和端口
                    ipSent = new IPEndPoint(IPAddress.Parse(ip), 8001);
                    //与服务器进行连接
    
                    ClassSocket socketConnet = new ClassSocket(socketSent, ipSent);
                    Thread tConnection = new Thread(new ThreadStart(socketConnet.SocketConnect));
                    tConnection.Start();
    
                    Thread.Sleep(100);
                    //将要发送的文件加上"DAT"标识符
    
                    ClassSentFile sentFile = new ClassSentFile(dlg, socketSent);
                    Thread tSentFile = new Thread(new ThreadStart(sentFile.SentFile));
                    tSentFile.Start();
    
                    
                }
            }

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Windows.Forms;
    namespace Message
    {
        class ClassSentFile
        {
            private OpenFileDialog dlg;
            private Socket socketSent;
            public ClassSentFile(OpenFileDialog dlg, Socket socketSent)
            {
                this.dlg = dlg;
                this.socketSent = socketSent;
            }
            public void SentFile()
            {
                string msg = "DAT " + dlg.FileName;
    
                //将 "msg" 转化为字节流的形式进行传送
                socketSent.Send(Encoding.Default.GetBytes(msg));
    
    
                //定义一个读文件流
                FileStream read = new FileStream(dlg.FileName, FileMode.Open, FileAccess.Read);
    
                //设置缓冲区为1024byte
                byte[] buff = new byte[1024];
                int len = 0;
                while ((len = read.Read(buff, 0, 1024)) != 0)
                {
                    //按实际的字节总量发送信息
                    socketSent.Send(buff, 0, len, SocketFlags.None);
                }
    
                //将要发送信息的最后加上"END"标识符
                msg = "END";
    
                //将 "msg" 发送
                socketSent.Send(Encoding.Default.GetBytes(msg));
    
                socketSent.Close();
                read.Close();
            }
        }
    }
    

  • 相关阅读:
    数论--莫比乌斯函数
    数论--欧拉函数
    数论--素数
    数论--逆元
    数论--扩展欧几里得exgcd
    【NOIP 校内模拟】T1 优美的序列(二分+st表+卡常)
    【NOIP校内模拟】T2 飞越行星带(kruskal)
    【NOIP 2017】逛公园(最短路+记忆化搜索)
    【SDOI2009】Elaxia的路线(拓扑+最短路+dp)
    【BZOJ2750】【HAOI2012】道路(最短路+拓扑)
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234316.html
Copyright © 2011-2022 走看看