资源简介
利用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\ob
文件 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\ob
文件 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个文件信息
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论