• 大小: 152KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: C/C++
  • 标签: linux  ftp  c语言  

资源简介

利用tcp套接字编程实现,均已Debug,代码有中文注释

资源截图

代码片段和文件信息

#include “include.h“												// 引用列表
#include “string.h“
#include “command.h“ // 标准命令

// 读取Socket上的信息并且保存到缓存区
int readBuffer(int socket char *buffer int size int singleLine) {
clearStr(buffer);
int result = read(socket buffer size);
if (result == -1) {
return -1;
}
if (singleLine) {
firstLine(buffer);
return strlen(buffer);
}
cutStr(buffer result);
return result;
}

// 进入被动模式并且返回数据Socket号
int passive(int serverSocket struct sockaddr_in data) {
char cmd[STR_MAX_LENGTH];
char buffer[STR_MAX_LENGTH];
int result;
//strcpy(cmd “TYPE I\r\n“); // 进入二进制模式传递信息
//result = send(serverSocket cmd strlen(cmd) 0);
//result = recv(serverSocket buffer sizeof(buffer)0);
//printf(“%s“ buffer);
strcpy(cmd “PASV\r\n“); // 被动模式命令
result = send(serverSocket cmd strlen(cmd) 0);
if (result < 0) {
printf(“Error: Sending on stream socket.\n“);
return -1;
} else {
readBuffer(serverSocket buffer sizeof(buffer) 1); // 接受服务器消息
if (getCommandNo(buffer) != 227) {
return -1;
}
int temp[6]; // 解析服务器消息
getNumbersAfter(buffer ‘(‘ temp 6);
int portNo = temp[4] * 256 + temp[5]; // 获取端口号
printf(“%d\r\n“ portNo);

char serverIP[STR_MAX_LENGTH];
clearStr(serverIP); // 解析IP地址
concatInt(serverIP temp[0]);
concatStr(serverIP “.“);
concatInt(serverIP temp[1]);
concatStr(serverIP “.“);
concatInt(serverIP temp[2]);
concatStr(serverIP “.“);
concatInt(serverIP temp[3]);
inet_pton(AF_INET serverIP &data.sin_addr);
int dataSocket = socket(AF_INET SOCK_STREAM 0);
if (dataSocket < 0) {
printf(“Error: Failed to initial socket! Program will exit.\n“);
return -1;
}
data.sin_family = AF_INET; // 准备数据连接
data.sin_port = htons(portNo);
result = connect(dataSocket (struct sockaddr *) &data sizeof(data));
if (result < 0) {
printf(“Error: Failed to connect socket! Program will exit.\n“);
return -1;
}

printf(“%s\n“ buffer);
return dataSocket; // 返回数据Socket号
}
}

// 主函数 
int main() {

printf(“\n“);
printf(“Welcome to FTP client.\n“);
printf(“Type \“?\“ for more information.\n“);
printf(“\n“);

int serverSocket = socket(AF_INET SOCK_STREAM 0); // 初始化信息Socket
if (serverSocket < 0) {
printf(“Error: Failed to initial socket! Program will exit.\n“);
return -1;
}

int connecting = 0; 
int result;
struct sockaddr_in server;
struct sockaddr_in data;

char ftpcmd[STR_MAX_LENGTH];
char buffer[STR_MAX_LENGTH];

while (1) { // 无限循环等待用户输入
char cmd[STR_MAX_LENGTH];
printf(“>“);
readline(cmd);

if (sameStr(cmd “open“)) { // 连接服务器命令
if (connecting == 1) {
printf(
“Error: A server connect already exists please disconnect first.\n“);
} else {
printf(“Please input the server IP address: “);
char serverIP[STR_MAX_LENGTH];
readline(serverIP); // 获取IP
printf(“Please input the port N

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      30522  2010-05-15 19:47  Client\.cproject

     文件       2384  2010-05-15 19:47  Client\.project

     文件      17644  2010-05-20 15:09  Client\client

     文件      12399  2010-06-13 10:53  Client\client.c

     文件      12957  2010-05-20 15:09  Client\client.c~

     文件       1704  2010-06-13 11:11  Client\command.h

     文件      90449  2010-05-18 09:17  Client\Debug\Client

     文件        113  2010-05-18 09:17  Client\Debug\client.d

     文件      88560  2010-05-18 09:17  Client\Debug\client.o

     文件        953  2010-05-18 09:17  Client\Debug\makefile

     文件        230  2010-05-18 09:17  Client\Debug\objects.mk

     文件        390  2010-05-18 09:17  Client\Debug\sources.mk

     文件        649  2010-05-18 09:17  Client\Debug\subdir.mk

     文件        386  2010-05-16 19:19  Client\include.h

     文件       4070  2010-05-19 11:43  Client\string.h

     文件      59622  2010-05-15 19:47  Server\.cproject

     文件       2384  2010-05-15 19:47  Server\.project

     文件       1704  2010-06-13 11:11  Server\command.h

     文件        953  2010-05-16 19:18  Server\Debug\makefile

     文件        230  2010-05-16 19:18  Server\Debug\objects.mk

     文件      97100  2010-05-16 19:18  Server\Debug\Server

     文件        113  2010-05-16 19:18  Server\Debug\server.d

     文件      93096  2010-05-16 19:18  Server\Debug\server.o

     文件        390  2010-05-16 19:18  Server\Debug\sources.mk

     文件        649  2010-05-16 19:18  Server\Debug\subdir.mk

     文件        407  2010-05-16 19:17  Server\include.h

     文件      22500  2010-05-19 12:10  Server\server

     文件      15554  2010-12-06 10:57  Server\server.c

     文件       4119  2010-05-16 19:17  Server\string.h

     目录          0  2010-05-30 17:31  Client\Debug

............此处省略6个文件信息

评论

共有 条评论