




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c# ftp 客户端和服务器配套的服务器和客户端,用c#实现ftp功能,使用socket实现。网上查到的不是运行有错误,就是没有配套的另一端,恶心的很。干脆我发布个能用的简单版。本版是可以交互字符串的命令行(控制台)版本。刚刚在vs2008下运行成功。大家可以在此基础上实现更多的功能,也可以小修小改,弄成窗体版本。各种功能实现的思想:我的思路是1 不同命令使得服务器和客户端交互不同的字符串2 两者通过if语句比照字符串来识别不同的需求下载(上传)功能的扩充:先比照字符串发现是下载,比如客户端发给服务器down:3.txtdown标记着是下载,3.txt是文件名,获得了文件名之后先建立个空的文件流,然后把服务器接下来发来的文件的内容(byte数组类型)一批一批地写入文件流,写完后关闭文件流就ok了。登陆功能的扩充:服务器端弄个bool类型的变量,用它来控制所谓的登陆图形界面的扩充:c#可以直接从工具栏中把有用的控件拖入设计窗口,双击控件进入代码编辑界面,进去写代码就可以了,其实就是把控制台版本的相关代码沾过来,小修小改就好。下面是服务器端完整代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.Net.Sockets;namespace FtpMyServer class Server static void Main(string args) const int StreamSize = 256; const int Port = 2010; /端口号 var ipAddr = new IPAddress(new byte 127, 0, 0, 1 ); var talk = new List aaa,bbb,ccc ; var mSvr = new Server(); var AsciiEnc = new ASCIIEncoding(); var inStream=new byteStreamSize; var outStream=new byteStreamSize; Random rnd = null; string reqString = string.Empty; int index = 0; var tcpl = new TcpListener(ipAddr, Port);/tcpl是“127,0,0,1,2010”的sockets.Listen tcpl.Start();/ 开始侦听传入的连接请求。tcpl是“127,0,0,1,2010”的sockets.Listen Console.WriteLine(服务器开始监听); do try /服务器到这里就等待数据,不走了 Socket sock = tcpl.AcceptSocket();/tcpl是“127,0,0,1,2010”的sockets.Listen / 摘要: / 接受挂起的连接请求。 / / 返回结果: / 用于发送和接收数据的 System.Net.Sockets.Socket。 / / 异常: / System.InvalidOperationException: / 尚未通过调用 System.Net.Sockets.TcpListener.Start() 来启动该侦听器。 /客户端到了:var myClient = new TcpClient(LocalHost, Port);之后 /开始了下面的 /Socket sock 是“127,0,0,1,2010”的sockets.Listen的.AcceptSocket,在等客户端发送request to 服务器 /客户端发送语句:myStream.Write(outStream, 0, outStream.Length); /服务器这边receive。 int count = sock.Receive(inStream, inStream.Length, 0); reqString = AsciiEnc.GetString(inStream, 0, count); Console.WriteLine(reqString); rnd = new Random(); index = rnd.Next(talk.Count); outStream = AsciiEnc.GetBytes(talkindex as string); /服务器这边收了到客户端的请求 /服务器把应答发送给客户端。 sock.Send(outStream, outStream.Length, 0); /Socket sock 是“127,0,0,1,2010”的sockets.Listen的.AcceptSocket catch (SocketException sockEx) Console.WriteLine(generic exception message:0, sockEx.ToString(); while (reqString != bye); tcpl.Stop(); 下面是客户端完整代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;using System.Net;using System.Net.Sockets;namespace ftpClient_ class Client static void Main(string args) const int StreamSize = 256; const int Port = 2010; const string LocalHost = localhost; var ipEndpt = new IPAddress(new byte 127, 0, 0, 1 ); /客户端居然没用到ip var AsciiEnc = new ASCIIEncoding(); var inStream = new byte StreamSize; var outStream = new byteStreamSize; string freeAdvice; string choice = Q; do try Console.WriteLine(n money linen); Console.WriteLine(1 - get advice); Console.WriteLine(Q - Quit); Console.Write(n please choose); choice = Console.ReadLine(); Console.WriteLine(); /输入命令 / 功能:初始化 System.Net.Sockets.TcpClient 类的新实例 /并且把它连接到指定主机上的指定端口。 / 参数: / hostname: / 要连接到的远程主机的 DNS 名。 / port: / 要连接到的远程主机的端口号。 /连接到指定主机上的指定端口 var myClient = new TcpClient(LocalHost,Port); /跳到服务器,服务器那边,下面的sock等着sock.receive呢。 /Socket sock = tcpl.AcceptSocket();/tcpl是“127,0,0,1,2010”的sockets.Listen Stream myStream = myClient.GetStream();/可能是服务器传东西过来时要用的 outStream = AsciiEnc.GetBytes(what is the secret of making money?); if (choice = 1) /发送request to 服务器 myStream.Write(outStream, 0, outStream.Length); /清理数组中旧信息 for (int i = 0; i inStream.Length; i+) inStreami = 0; /取回来自服务器的回答 myStream.Read(inStream, 0, inStream.Length); /instream固定是256 freeAdvice = AsciiEnc.GetString(inStream, 0, inStream.Length); Console.WriteLine(服务器回复:0, freeAdvice); else /关闭与服务器的开会 outStream = AsciiEnc.GetBytes(bye); myStream.Write(outStream, 0, outStream.Leng
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公软件应用技术考试
- 2025中文合同谈判常用句型
- 人工挖井合同样本
- 二零二五版知识产权服务框架协议
- 个人退股协议书范例二零二五年
- 商铺产权转让合同
- 2025四川房屋租赁合同范本
- 聘用兼职教师合同二零二五年
- 工业品买卖合同参考
- 二零二五食品安全协议责任书
- 吉林省吉林市2024-2025学年高三下学期3月三模试题 生物 含答案
- 2025年陕西农业发展集团有限公司(陕西省土地工程建设集团)招聘(200人)笔试参考题库附带答案详解
- 2025年03月中央社会工作部所属事业单位公开招聘11人笔试历年参考题库考点剖析附解题思路及答案详解
- 2025年中高端女装市场趋势与前景深度分析
- 2025北京清华附中高三(下)统练一数学(教师版)
- 2025-2030中国孵化器行业市场发展前瞻及投资战略研究报告
- 5.3基本经济制度 课件 2024-2025学年统编版道德与法治八年级下册
- Unit4 Breaking Boundaries 单元教学设计-2024-2025学年高中英语外研版(2019)选择性必修第二册
- T-CCTAS 61-2023 桥梁承重缆索抗火密封综合防护技术规程
- 2025慢性阻塞性肺病(GOLD)指南更新要点解读课件
- 2024年05月湖北中国邮政储蓄银行湖北省分行春季校园招考笔试历年参考题库附带答案详解
评论
0/150
提交评论