文档章节

C# Winform局域网传送文件

深圳大道
 深圳大道
发布于 2016/12/29 15:37
字数 266
阅读 6
收藏 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
125
1
网页WEB打印控件制作

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

CandyNext
2016/06/13
2.3K
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
在Winform程序中设置管理员权限及为用户组添加写入权限

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

walb呀
2017/12/04
0
0
C# winform程序实现开机自启动,并且识别是开机启动还是双击启动

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

碧水青荷
2018/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
19分钟前
2
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
33分钟前
6
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
47分钟前
1
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
53分钟前
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部