FTP tcpclient 上传文件
2022/6/16 23:20:15
本文主要是介绍FTP tcpclient 上传文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
var host="localhost"; var port = 21; var u="username"; var p="password"; var remoteDir = "filesync"; var fp="C:\\Users\\admin\\Desktop\\新建文本文档.txt"; await Upload(); async Task Upload() { var res = ""; remoteDir = remoteDir.Trim('/'); var filename = Path.GetFileName(fp); TcpClient tcp = new TcpClient(); tcp.Connect(host, port); NetworkStream stream = tcp.GetStream(); if (tcp.Connected.ToString() != "True") { Console.WriteLine("Connect Failed!"); Console.ReadLine(); return; } await ReadTcp(stream); await cmd(stream, "USER " + u); await cmd(stream, "PASS " + p); await cmd(stream, "FEAT"); await cmd(stream, "TYPE I"); res = await cmd(stream, "CWD /" + remoteDir); if (res.StartsWith("550 ")) await cmd(stream, "MKD /" + remoteDir); await cmd(stream, "CWD /" + remoteDir); res = await cmd(stream, "PASV"); var commands = res.Split(','); if (commands.Length > 4) { int port2 = int.Parse(commands[4]) * 256 + int.Parse(commands[5].Trim('\r', '\n', ')', '(')); TcpClient tcpup = new TcpClient(); tcpup.Connect(host, port2); var req = tcpup.GetStream(); res = await cmd(stream, "STOR " + filename); if (!res.StartsWith("150 ")) { throw new Exception("Upload PASV port Error!"); } FileStream fs = new FileStream(fp, FileMode.Open, FileAccess.Read); fs.CopyTo(req); req.Flush(); fs.Close(); tcpup.Dispose(); } await ReadTcp(stream); stream.Close(); tcp.Close(); } async Task<string> cmd(NetworkStream stream, string text) { WriteTcp(stream,text); return await ReadTcp(stream); } void WriteTcp(NetworkStream stream, string text) { if (!text.EndsWith("\r\n")) text += "\r\n"; stream.Write(Encoding.UTF8.GetBytes(text)); } async Task<string> ReadTcp(NetworkStream stream, bool print=true) { MemoryStream ms = new MemoryStream(); do { await Task.Delay(100); var bytes=new byte[4096]; var len= stream.Read(bytes, 0, bytes.Length); ms.Write(bytes, 0, len); } while (stream.DataAvailable); var text= Encoding.UTF8.GetString(ms.ToArray()); if(print) Console.WriteLine(text); return text; }
这篇关于FTP tcpclient 上传文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升