如何利用ftp原理编程实现文件传输?

spr 2001-11-10 09:10:09

在unix上,如何使用C语言编程实现含有FTP的文件传输?不直接采用网络编程,而直接使用嵌套FTP?
请有过类似编程经验的高手指教,在下不胜感激!
...全文
59 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lurenfu 2001-11-11
  • 打赏
  • 举报
回复
有没有搞错啦,ftp也是用socket实现的。事实上你自己写程序给ftp服务器传送文件用不了多少代码就可以搞写。ftp有控制通道和数据通道。控制通道由ftp客户端连接到ftp服务端,当有文件要传送时,由ftp客户端绑定端口,然后能过控制通道告诉ftp服务器,ftp服务器会跟这边建立连接,并把文件传送给ftp客户端,就这么简单的功能,有必要嵌套用ftp程序实现吗?
tuba_cn 2001-11-10
  • 打赏
  • 举报
回复
关注
FTP实验报告全文共2页,当前为第1页。FTP实验报告全文共2页,当前为第1页。FTP实验报告 FTP实验报告全文共2页,当前为第1页。 FTP实验报告全文共2页,当前为第1页。 实验目的 本实验要求在linux系统上完成一个文件传输协议,通过本实验,不但可以深入理解FTP协议的原理和细节,还可以学会利用Socket接口设计实现简单应用层协议,掌握网络应用程序的基本设计方法和实验技巧。 实验说明 文件传输协议用于两台计算机之间传递文件FTP包含了两个通道。一个是控制通道,一个是数据通道。控制通道是和FTP服务器进行沟通的通道,连接服务器,发送指令。数据通道则是和FTP服务器进行文件传输和获取文件列表的通道。 实验内容 本实验要求在Linux系统上使用Socket接口实现FTP客户顿和服务器端的程序,使客户端可以连接至服务器,并且可以进行一些FTP的基本操作。应实现FTP命令包括如下几点: get: 取远方的一个文件 put: 传给远方一个文件 pwd: 显示远方当前目录 dir: 列出远方当前目录 cd: 改变远方当前目录 help: 显示提供的命令 quit: 退出 实验代码 客户端和服务器代码见附件。 思考题 1.在FTP协议中,为什么要建立两个TCP连接来分别传送命令和数据? 答:如果只用一个连接,那就是复用一个端口。而我们知道, 端口之间通信需要传输协议才能建立连接, 端口的复用等于说在一个端口上同时使用2种协议以上,但如果是10种协议呢? 不但会影响传输速度,数据出错的概率也变大了。 FTP实验报告全文共2页,当前为第2页。FTP实验报告全文共2页,当前为第2页。2.主动方式和被动方式的主要区别是什么?为何要设计这两种方式? FTP实验报告全文共2页,当前为第2页。 FTP实验报告全文共2页,当前为第2页。 答:区别:主动方式下客户端首先和服务端建立连接,在传输数据时服务器和客户端必须建立一个新的连接,而被动方式则是由服务器等待客户端来连接,且不用建立新的连接。 原因:一般情况下都是采用主动模式,但很多防火墙在设置的时候都是不允许接受外部发起的连接的, 所以主动模式许多时候在内部网络的机器通过防火墙出去时受到了限制,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。这个时候被动模式就派上用场,因为不用建立新的连接, 所以也就不会涉及到后面的问题了。 3.当使用FTP下载大量小文件的时候,速度会很慢,这是什么缘故?可以怎样改进? 答:原因:若顺序下载,则对于每个文件,服务器都要先寻找文件传输。改进:开多个线程并行下载。 实验总结 通过本次试验,我理解了整个FTP协议的细节和工作流程,对Linux系统下Socket编程的过程有了较多的了解,为以后网络编程的学习打下了良好的基础。 FTP实验报告
本书是一本介绍利用Visual C++进行网络通信程序开发的书籍,书中精选了大量网络实例,涵盖了本地计算机网络编程,局域网网络通信编程,IE编程,网络通信协议编程,串口通信编程,代理服务器编程和高级网络通信编程。每个工程实例都提供了完整的源代码,读者可以很容易地根据需要进行二次开发。本书适合进行网络通信开发的人员阅读,同时也可以作为科研单位,高校相关专业人员的参考书籍。

目录介绍
第1章 Visual C++网络通信编程基础 1
1.1 Winsock1.1编程技术 1
1.1.1 Winsock的基本概念 1
1.1.2 Winsock的编程特点 2
1.1.3 Winsock基本的API 2
1.1.4 Winsock的异步模式 7
1.1.5 面向连接协议和无连接协议 20
1.2 Winsock 2.0编程技术 21
1.2.1 Winsock 2.0技术说明 21
1.2.2 Winsock 2.0新增函数 25
1.2.3 Winsock网络程序——聊天室 26
1.3 CAsyncSocket编程技术 38
1.3.1 CAsyncSocket类的组成 38
1.3.2 CAsyncSocket编程模型 39
1.4 CSocket编程技术 41
1.4.1 CSocket类的组成 42
1.4.2 CSocket应用实例——聊天室 43
1.5 WinInet编程技术 52

第2章 本地计算机网络编程 57
2.1 获取计算机的名称和IP地址 57
2.2 获取计算机的子网掩码 60
2.3 获取计算机的DNS设置 62
2.4 获取计算机的网卡地址 63
2.5 获取计算机安装的协议 65
2.6 获取计算机提供的服务 67
2.7 获取计算机的所有网络资源 69
2.8 修改本地计算机的网络设置 70
2.9 获取计算机TCP/IP的所有信息 74

第3章 局域网网络通信编程实例 79
3.1 获取网上邻居 79
3.1.1 实现原理 80
3.1.2 实例实现 83
3.2 IP地址和主机名之间的转换 87
3.2.1 实现原理 87
3.2.2 实例实现 89
3.3 映射网络驱动器 93
3.3.1 实现原理 93
3.3.2 实例实现 95
3.4 局域网消息发送程序Net Send 97
3.4.1 实现原理 98
3.4.2 实例实现 101
3.5 获取局域网内其他计算机的信息 103

第4章 IE编程实例 111
4.1 简单的浏览器的实现 111
4.1.1 实现原理 111
4.1.2 实例实现 112
4.2 删除IE相关历史记录 116
4.2.1 实现原理 116
4.2.2 实例实现 117
4.3 将应用程序加入到IE工具栏 121
4.3.1 实现原理 122
4.3.2 实例实现 123
4.4 超级链接的实现 127
4.4.1 实现原理 127
4.4.2 实例实现 128
4.5 禁止IE的弹出窗口 132
4.5.1 实现原理 132
4.5.2 实例实现 133
4.6 禁止浏览某些网站 139
4.6.1 实现原理 139
4.6.2 实例实现 139
4.7 IE收藏夹 142
4.7.1 实现原理 142
4.7.2 实例实现 142
4.8 设置桌面快捷方式和活动桌面 145
4.8.1 实现原理 145
4.8.2 实例实现 146

第5章 基本网络编程实例 150
5.1 点对点文件传输 150
5.2 端口扫描程序 155
5.2.1 实现原理 155
5.2.2 实例实现 155
5.3 Finger编程 161
5.3.1 实现原理 162
5.3.2 实例实现 164
5.4 Sniff编程 166
5.4.1 实现原理 166
5.4.2 实例实现 167
5.5 Internet文件下载 178
5.5.1 实现原理 178
5.5.2 实例实现 180

第6章 网络通信协议编程实例 184
6.1 FTP协议 185
6.1.1 FTP工作原理 185
6.1.2 FTP数据表示 186
6.1.3 FTP命令 187
6.1.4 FTP应答 192
6.1.5 FTP客户端实例方法 194
6.1.6 FTP客户端实例实现 201
6.2 SMTP协议 221
6.2.1 SMTP会话 221
6.2.2 SMTP信件 225
6.2.3 SMTP客户端实例方法 232
6.2.4 SMTP客户端实例实现 233
6.3 POP3协议 259
6.3.1 POP3会话 259
6.3.2 POP3信件 264
6.3.3 POP3客户端实例方法 268
6.3.4 POP3客户端实例实现 268
6.4 ICMP协议 287
6.4.1 ICMP报文格式 287
6.4.2 ICMP时间戳请求与应答 289
6.4.3 Ping程序的实现 291
6.4.4 TraceRoute程序的实现 300
6.5 Telnet协议 308
6.5.1 Telnet协议 308
6.5.2 NVT ASCII字符集 309
6.5.3 协商选项 309
6.5.4 BBS实例实现 310
6.6 HTTP协议 323
6.6.1 HTTP会话 324
6.6.2 HTTP数据 329
6.6.3 HTTP客户端程序的实现 329
6.6.4 HTTP服务器实例实现 343

第7章 Modem/串口通信编程实例 353
7.1 AT命令 353
7.1.1 Modem状态 353
7.1.2 AT命令 354
7.1.3 Modem返回信息码 354
7.2 MSCOMM控件编程实例 355
7.2.1 实现原理 355
7.2.2 实例实现 356
7.3 串口通信API编程实例 360
7.3.1 打开和关闭串口 360
7.3.2 串口配置 362
7.3.3 串口属性设置 365
7.3.4 缓冲区控制 366
7.3.5 串口读写 367
7.3.6 通信事件 369
7.3.7 设备控制命令 370
7.3.8 实例实现 370

第8章 代理服务器编程实例 378
8.1 Socks 5协议编程 379
8.1.1 实例原理 386
8.1.2 实例实现 388
8.2 HTTP代理服务器实例 397
8.2.1 主框架代码分析 397
8.2.2 代理类CProxyServer的实现 399

第9章 高级实例解析 409
9.1 串口通信高级编程实例 409
9.1.1 主程序结构和流程 409
9.1.2 实例演示 409
9.1.3 实例原理 410
9.1.4 实例设计 414
9.1.5 代码分析 414
9.2 网络流量监控实例 425
9.2.1 主程序结构和流程 426
9.2.2 实例演示 426
9.2.3 实例原理 426
9.2.4 实例设计 428
9.2.5 代码分析 429
9.3 网站下载实例 438
9.3.1 主程序结构和流程 438
9.3.2 实例演示 438
9.3.3 实例原理 439
9.3.4 实例设计 441
9.3.5 代码分析 442
9.4 网络五子棋实例 458
9.4.1 主程序结构和流程 458
9.4.2 实例演示 458
9.4.3 实例原理 459
9.4.4 实例设计 459
9.4.5 代码分析 459
9.5 语音聊天实例 466
9.5.1 主程序结构和流程 467
9.5.2 实例演示 467
9.5.3 实例原理 468
9.5.4 实例设计 472
9.5.5 代码分析 473
9.6 远程控制实例 482
9.6.1 主程序结构和流程 482
9.6.2 实例演示 483
9.6.3 实例原理 484
9.6.4 实例设计 485

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧