代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
CSharp
】
传送文件代码(文本文件)
作者:
xqf222
/ 发布于
2014/2/25
/
408
传送文件代码(文本文件)
传送窗体主要代码 //引用代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.IO; using System.Text; //按钮事件代码 //取得预发送的文件名 string SendFileName=textBox5.Text.Trim(); //远程主机 string RemoteHostName=textBox1.Text.Trim(); //远程端口 int RemotePort=Int32.Parse(textBox2.Text.Trim()); //得到主机信息 IPHostEntry ipInfo=Dns.GetHostByName(RemoteHostName); //取得IPAddress[] IPAddress[] ipAddr=ipInfo.AddressList; //得到远程接收IP IPAddress ip=ipAddr[0]; //组合出远程终结点 IPEndPoint hostEP=new IPEndPoint(ip,RemotePort); //创建Socket 实例 Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); try { //尝试连接 socket.Connect(hostEP); } catch(Exception se) { MessageBox.Show("连接远程IP错误"+se.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); } //发送文件流代码 NetworkStream tcpStream = new NetworkStream(socket) ; FileStream fs = new FileStream(SendFileName, FileMode.Open, FileAccess.Read); BinaryReader fileReader = new BinaryReader(fs,Encoding.Default); long Total=fs.Length; byte[] bytes = new byte[Total]; int hasRead=0; int len; //获取要传输文件的总长度 //读取文件写入到数据流中 while((hasRead<=fs.Length)&&tcpStream.CanWrite&&fileReader.Read(bytes,0,bytes.Length)!=0) //while((hasRead = fileReader.Read(bytes,0,bytes.Length)) != 0) { //从要传输的文件读取指定长度的数据 len =fileReader.Read(bytes,0,bytes.Length) ; //将读取的数据发送到对应的计算机 tcpStream.Write(bytes,0,hasRead); try { //向主机发送请求 socket.Send(bytes,bytes.Length,0); this.statusBar1.Text+=" "+hasRead; } catch(Exception ce) { MessageBox.Show("发送错误:"+ce.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); } //增加已经发送的长度 hasRead+=len ; } fileReader.Close(); fs.Close(); //禁用Socket socket.Shutdown(SocketShutdown.Both); //关闭Socket socket.Close(); this.statusBar1.Text+="文件成功发送!"; 接收窗体主要代码 //引用代码 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; using System.IO; using System.Text; //按钮事件代码 /// <summary> /// 必需的设计器变量。 /// </summary> /// private Thread thThreadRead ; //创建线程,用以侦听端口号,接收信息 private TcpListener tlTcpListen ; //侦听端口号 private bool blistener = true ; //设定标示位,判断侦听状态 private Socket stRead ; private System.Windows.Forms.Button button4; private void button1_Click(object sender, System.EventArgs e) { thThreadRead = new Thread ( new ThreadStart( Listen ) ) ; //以Listen过程来初始化Thread实例 thThreadRead.Start ( ) ; //启动线程 button1.Enabled = false ; } private void Listen() { try { IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName()); IPAddress LocalIP = ieh.AddressList[0]; int LocalPort=Int32.Parse(textBox4.Text); this.textBox3.Text=LocalIP.ToString(); string ReceiveFileName=textBox6.Text.Trim(); tlTcpListen = new TcpListener( LocalIP, LocalPort ); //以8000端口号来初始化TcpListener实例 tlTcpListen.Start ( ) ; //开始监听网络的连接请求 statusBar1.Text = "程序正在监听..." ; stRead = tlTcpListen.AcceptSocket() ; //通过连接请求,并获得接收数据时使用的Socket实例 EndPoint tempRemoteEP = stRead.RemoteEndPoint ; IPEndPoint tempRemoteIP = ( IPEndPoint ) tempRemoteEP ; //获取请求的远程计算机名称 IPHostEntry host = Dns.GetHostByAddress( tempRemoteIP.Address ) ; string sHostName = host.HostName ; statusBar1.Text = "远程电脑: "+ sHostName + " 已经与本机通过端口 " +LocalPort.ToString()+" 成功建立连接!" ; //同意和发送端计算机建立连接 string ReceiveContent=""; string sTime = DateTime.Now.ToShortTimeString ( ) ; int iRead; //循环侦听 while (blistener) { //获取接收数据时的时间 Byte [ ] byRead =new Byte [229888] ; iRead = stRead.ReceiveFrom ( byRead , ref tempRemoteEP ) ; //读取完成后退出循环 if(iRead<=0) { this.button1.Enabled = true ; //保存数据流为本地文件 byte[] content=Encoding.Default.GetBytes(ReceiveContent); try { //创建文件流对象实例 FileStream fs=new FileStream(ReceiveFileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); //写入文件 fs.Write(content,0,content.Length); fs.Close(); } catch(Exception fe) { MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); } //richTextBox1.Text ="/n/r接收时间 "+ sTime + "/n/r接收文件内容 " +ReceiveContent ; richTextBox1.Text =ReceiveContent ; stRead.Close ( ) ; tlTcpListen.Stop ( ) ; //关闭侦听 statusBar1.Text = "连接已经关闭!" ; thThreadRead.Abort() ; //中止线程 break ; } else { //将读取的字节数转换为字符串 //ReceiveContent+="/n/r本次"+iRead+"字节 "+Encoding.Default.GetString(byRead); ReceiveContent+=Encoding.Default.GetString(byRead); //ReceiveContent+=stRead.re"/n/r本次"+iRead+"字节 "+Encoding.Default.GetString(byRead); } } } catch ( System.Security.SecurityException ) { MessageBox.Show ( "侦听失败!" , "错误" ) ; this.button1.Enabled=true; } }
试试其它关键字
传送文件
同语言下
.
文件IO 操作类库
.
Check图片类型[JPEG(.jpg 、.jpeg),TIF,GIF,BMP,PNG,P
.
机器名和IP取得(IPV4 IPV6)
.
Tiff转换Bitmap
.
linqHelper
.
MadieHelper.cs
.
RegHelper.cs
.
如果关闭一个窗体后激活另一个窗体的事件或方法
.
创建日志通用类
.
串口辅助开发类
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
xqf222
贡献的其它代码
(
82
)
.
VB编写的登录局域网内的sql2000数据库服务器
.
ASP .NET登录界面用户验证码
.
VB操作ACCESS数据库
.
批量发送邮件程序
.
批量抓取网页代码中的HTTP和邮件地址
.
禁止站外提交参数测试
.
FTP网站文件到本地的
.
调用对应的应用程打开文件
.
抓取邮件内容解析
.
保存文件时候的弹出选择要保存的文件夹带新建文件夹效
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3