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

  • 相关阅读:
    如何使用lr监视服务器linux的方法
    wc的使用
    mrtg 的配置和使用(从网上搜集的资料,自己整理过的)
    单元测试(从网上搜集的资料,自己总结整理过的)
    StatsD学习
    NodeJs NTLM认证(烂尾)
    用issnode+IIS来托管NodeJs Server之一:安装篇
    jQuery设置光标停留位置在文本最后(或在具体的位置)的办法
    Redis 相关资源
    纯CSS美化HTML的Table
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234316.html
Copyright © 2011-2022 走看看