资源简介
FTP客户端服务器端全部代码

代码片段和文件信息
//
// THFTPAPI.c
// MyFTP
//
// Created by TanHao on 13-6-6.
// Copyright (c) 2013年 http://www.tanhao.me. All rights reserved.
//
#include “THFTPAPI.h“
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//创建一个socket并返回
int socket_connect(char *hostint port)
{
struct sockaddr_in address;
int s opvalue;
socklen_t slen;
opvalue = 8;
slen = sizeof(opvalue);
memset(&address 0 sizeof(address));
if ((s = socket(AF_INET SOCK_STREAM 0)) < 0 ||
setsockopt(s IPPROTO_IP IP_TOS &opvalue slen) < 0)
return -1;
//设置接收和发送超时
struct timeval timeo = {15 0};
setsockopt(s SOL_SOCKET SO_SNDTIMEO &timeo sizeof(timeo));
setsockopt(s SOL_SOCKET SO_RCVTIMEO &timeo sizeof(timeo));
address.sin_family = AF_INET;
address.sin_port = htons((unsigned short)port);
struct hostent* server = gethostbyname(host);
if (!server)
return -1;
memcpy(&address.sin_addr.s_addr server->h_addr server->h_length);
if (connect(s (struct sockaddr*) &address sizeof(address)) == -1)
return -1;
return s;
}
//连接到一个ftp的服务器,返回socket
int connect_server( char *host int port )
{
int ctrl_sock;
char buf[512];
int result;
ssize_t len;
ctrl_sock = socket_connect(host port);
if (ctrl_sock == -1) {
return -1;
}
len = recv( ctrl_sock buf 512 0 );
buf[len] = 0;
sscanf( buf “%d“ &result );
if ( result != 220 ) {
close( ctrl_sock );
return -1;
}
return ctrl_sock;
}
//发送命令返回结果
int ftp_sendcmd_re( int sock char *cmd void *re_buf ssize_t *len)
{
char buf[512];
ssize_t r_len;
if ( send( sock cmd strlen(cmd) 0 ) == -1 )
return -1;
r_len = recv( sock buf 512 0 );
if ( r_len < 1 ) return -1;
buf[r_len] = 0;
if (len != NULL) *len = r_len;
if (re_buf != NULL) sprintf(re_buf “%s“ buf);
return 0;
}
//发送命令返回编号
int ftp_sendcmd( int sock char *cmd )
{
char buf[512];
int result;
ssize_t len;
result = ftp_sendcmd_re(sock cmd buf &len);
if (result == 0)
{
sscanf( buf “%d“ &result );
}
return result;
}
//登录ftp服务器
int login_server( int sock char *user char *pwd )
{
char buf[128];
int result;
sprintf( buf “USER %s\r\n“ user );
result = ftp_sendcmd( sock buf );
if ( result == 230 ) return 0;
else if ( result == 331 ) {
sprintf( buf “PASS %s\r\n“ pwd );
if ( ftp_sendcmd( sock buf ) != 230 ) return -1;
return 0;
}
else
return -1;
}
int create_datasock( int ctrl_sock )
{
int lsn_sock;
int port;
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 12198 2013-07-19 09:48 THFTPAPI.c
目录 0 2013-07-19 09:49 __MACOSX\
文件 171 2013-07-19 09:48 __MACOSX\._THFTPAPI.c
文件 998 2013-06-19 14:05 THFTPAPI.h
文件 171 2013-06-19 14:05 __MACOSX\._THFTPAPI.h
相关资源
- FTP课程设计(服务端+客户端)
- python实现的ftp自动上传、下载脚本
- 用Socket编程实现FTP
- tftp文件传输工具
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- 基于C 的简易FTP客户端(带源码)
- 用IdFTPServer写的一个FTPServer程序
- FTP命令详解.doc
- 一个简单方便的服务端ftp搭建工具
- 20cn的ftp服务器超好用 简洁
- 最好用的FTP服务器
- CuteFTP8.0绿色破解版免安装无需序列号
- PSFTP.EXE 工具
- CuteFTP8.0简体中文破解版
- Wing FTP Server FTP服务器 v6.1.9
- 易语言绵绵FTP网络验证操作模块源码
- 免费的2014ftp暴力破解扫描工具可自动
- linux c下的ftp客户端和服务器端
- Notepad++ ftp/sftp 插件
- 8uftp安装
- Xshell6+Xftp6绿色_破解版解压后点击绿色
- ftp断点续传,ftp协议网络抓拍数据
- redhat vsftp
- Windows Server 2016 部署FTP服务器
- 1688图片采集工具 v3.0.0.4.zip
- Qt之FTP客户端
- 编译通过的Sipek.SoftPhone
- Linux课设实现ftp服务器和客户端
- Renci.SshNet.dll及其文档和实现SSH、SCP、
评论
共有 条评论