概述
//发送文件
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();
}
}
}
转载于:https://www.cnblogs.com/smartsmile/archive/2013/03/11/6234316.html
最后
以上就是文艺眼神为你收集整理的C# Winform局域网传送文件的全部内容,希望文章能够帮你解决C# Winform局域网传送文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复