文档章节

C# Winform局域网传送文件

深圳大道
 深圳大道
发布于 2016/12/29 15:32
字数 266
阅读 12
收藏 0
//发送文件
        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://blog.csdn.net/smartsmile2012/article/details/8658177

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
如何搭建这样的企业软件架构?

各位大神,我用C#写了一个三层架构(DAL、BLL、UI)的winform桌面软件,开发完成后,制作成了安装文件,现在这个软件需要在公司局域网的多个电脑上安装使用。 但是,有个问题一直觉得不太好,...

江南1号
2018/07/26
193
1
网页WEB打印控件制作

在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件...

CandyNext
2016/06/13
2.8K
6
在 C#中调用 VC 编写的 dll 库

如何在C#中使用C/C++写的DLL。举例说明: 建立VC工程DllDemo,建立的时候选择MFC AppWizard(dll),选择Regular Dll using shared MFC Dll或者MFC Extension Dll。 现在可以写一个函数代码,在...

鉴客
2012/11/23
1K
1
C# winform程序实现开机自启动,并且识别是开机启动还是双击启动

开机启动程序,在很多场合都会用到,尤其是那种在后台运行的程序。 效果图: 以上两幅图都用到了命令行启动程序,为了模拟开机启动或者其他程序调用此程序。 第一幅图:程序启动可以根据不同...

碧水青荷
2018/10/29
0
0
在Winform程序中设置管理员权限及为用户组添加写入权限

在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运...

walb呀
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解表单脚本系列第二篇——表单字段

本文转载于:专业的前端网站➜深入理解表单脚本系列第二篇——表单字段 前面的话   表单字段又叫表单元素,表示表单所包含控件,如<input>、<select>等。本文将详细介绍表单字段的内容 访问...

前端老手
19分钟前
5
0
前端技术之:常用webpack插件

1、html-webpack-plugin Simplifies creation of HTML files to serve your webpack bundles. 主页地址: https://github.com/jantimon/html-webpack-plugin 安装方法: npm i --save-dev h......

popgis
24分钟前
6
0
IT兄弟连 HTML5教程 HTML5表单 多样的输入类型1

HTML5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证。并不是所有的主浏览器都支持新的input类型,不过我们可以在所有的主浏览器中使用它们,即使不被支持,仍然可以显示为...

老码农的一亩三分地
25分钟前
5
0
规则引擎

解决问题 版本迭代速度更不上业务变化,但是若多个业务同时变化,除了为每个业务设计专属配置项也不利于操作。就想服务接口单纯化,将复杂多变的业务逻辑交给规则引擎,让用户在web端或cs端自...

无极之岚
今天
7
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
今天
803
11

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部