• 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();
            }
        }
    }
    

  • 相关阅读:
    http和https
    openstack
    openstack安全问题
    openstack优势
    java多线程实现方式
    python多进程实现的几种方式
    Java 在提取url 生成图片以及正则表达式
    idea 生成 可执行文件
    dw cs6 支持高分辨率
    svchost.exe 大量占用的问题
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234316.html
Copyright © 2020-2023  润新知