社区
通信技术
帖子详情
请问FTP服务器的基本原理是什么?
fantasychina
2004-04-29 09:44:04
请问FTP服务器的基本原理是什么?哪儿有这方面的资料?
...全文
139
4
打赏
收藏
请问FTP服务器的基本原理是什么?
请问FTP服务器的基本原理是什么?哪儿有这方面的资料?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
醉马不肖
2004-05-04
打赏
举报
回复
找opensource看看
lsof
2004-05-02
打赏
举报
回复
FTP服务需要server上的两个TCP端口,21端口负责传送控制信息,20端口负责传送数据。对client端来说,先开辟一个随机端口连接server:21,交换一些控制信息,包括协商客户端的数据端口,然后有两种模式,一种是server:20主动连接该端口,第二个是client利用该端口主动发起到server:20的连接。如果client处于防火墙之后,那最好是用第二种方式。很多FTP客户端软件上都有这样的选项。
醉马不肖
2004-04-30
打赏
举报
回复
http://www.embed.com.cn/protocol/rfc/rfc959.txt
lucky2all
2004-04-30
打赏
举报
回复
解析ftp协议,看rfc
unsigned long client_ip;
unsigned short client_port;
unsigned short client_block;
int tftp_send_ack(struct tftphdr *tftp_hdr, int block)
{
struct tftphdr *tftp_ack;
struct sk_buff *skb;
skb = alloc_skb(ETH_FRAME_LEN);
udp_skb_reserve(skb);
tftp_ack = (struct tftphdr *)skb_put(skb, sizeof(struct tftphdr));
tftp_ack->th_opcode = htons(ACK);
tftp_ack->th_block = htons(block);
udp_send(skb, client_ip, TFTP, client_port);
return 0;
}
int tftp_rcv_wrq(struct sk_buff *skb)
{
struct tftphdr *tftp_hdr;
client_ip = ip_get_source_ip(skb);
client_port = udp_get_source_port(skb);
tftp_hdr = (struct tftphdr *)skb->data;
tftp_send_ack(tftp_hdr, 0);
client_block = 1;
tftp_put_begin();
return 0;
}
int tftp_rcv_data(struct sk_buff *skb)
{
struct tftphdr *tftp_hdr;
int len;
if (client_ip != ip_get_source_ip(skb))
return -1;
if (client_port != udp_get_source_port(skb))
return -1;
tftp_hdr = (struct tftphdr *)skb->data;
if (client_block == ntohs(tftp_hdr->th_block)) {
len = skb->len - sizeof(struct tftphdr);
// tftp_put(tftp_hdr->th_data, len);
//tftp_send_ack(tftp_hdr, client_block);
tftp_put((unsigned char *)tftp_hdr+sizeof(struct tftphdr), len);
tftp_send_ack(tftp_hdr, client_block);
client_block++;
if (len < 512)
tftp_put_end();
} else if (client_block > ntohs(tftp_hdr->th_block)) {
tftp_send_ack(tftp_hdr, ntohs(tftp_hdr->th_block));
} else {
tftp_send_ack(tftp_hdr, client_block);
}
return 0;
}
int tftp_rcv_packet(struct sk_buff *skb)
{
struct tftphdr *tftp_hdr;
tftp_hdr = (struct tftphdr *)skb->data;
switch (ntohs(tftp_hdr->th_opcode)) {
case RRQ:
break;
case WRQ:
tftp_rcv_wrq(skb);
break;
case DATA:
tftp_rcv_data(skb);
break;
case ACK:
break;
case ERROR:
break;
default:
break;
}
return 0;
}
使用QT实现文件上传和下载----
ftp服务器
首先,我们需要理解FTP(File Transfer Protocol)的
基本原理
。FTP是一种用于在互联网上进行文件传输的标准协议,它允许用户从一个远程服务器上传或下载文件。QT中的QNetworkAccessManager类是实现FTP操作的关键,它...
SwiFTP、FTP4J以及Demo下载
SwiFTP是一个轻量级的Java
FTP服务器
实现,它允许用户通过Wi-Fi将手机或其他设备作为
FTP服务器
来访问其文件系统。SwiFTP的主要优点是易于集成和使用,特别适合移动设备应用。它提供了API供开发者调用,以便设置...
ftp源码
FTP客户端是用户与
FTP服务器
交互的程序。它允许用户登录到服务器,列出目录,下载文件,上传文件,甚至执行其他高级操作,如断点续传。在C++中实现FTP客户端,通常会涉及以下关键知识点: 1. **套接字编程**:C++中...
ftp的C++源码实现,可以进行文件传输
这个压缩包文件包含了FTP的C++源码实现,涵盖了客户端和服务器端的代码,这对于理解FTP的工作原理以及如何在C++中实现FTP功能非常有帮助。 首先,让我们详细探讨FTP的基本概念。FTP使用客户端-服务器架构,客户端...
使用Internet控件的简单Web浏览器
3. FTP协议:理解FTP的基本工作原理,如命令结构、数据连接和不同模式(主动和被动)。 4. Winsock编程:了解如何使用Winsock进行网络通信,包括TCP和UDP连接。 5. 用户界面设计:创建用户友好的界面,处理按钮点击...
通信技术
4,386
社区成员
28,916
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章