资源简介
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
相关资源
- linux环境下基于socket通信的ftp系统
- MicroSoftProject
- FTP协议(中文版).pdf
- destoon7设置远程FTP图片服务器.docx
- vsftpd-3.0.2-27.el7.x86_64.rpm
- powerbuilder10.5通过调用FTP实现程序自动
- slimftp超小型的FTP服务器架设工具
- 3CDaemon中文版
- domino实现ftp上传和的案例
- linux为服务器,Windows为客户端的简单
- bat脚本 ftp登录隐藏密码 demo
- FTP客户端 源代码
- OAF 客户化开发之FTP服务器文件开发
- 批处理FTP文件
- pb调用ftp文件可展示列表
- Labview Ftp
- FTP密码破解解密工具
- 美国_环境保护署(EPA)_测试工况数据
- tftp服务器详细源码
- ftp网站爆破密码字典
- leapFTP免费免安装绿色版
- 使用QT实现文件上传和----ftp服务器
- FTPserver(迷你FTP服务器) v1.1 绿色单
- Xftp 6.0.0115 FTP/SFTP客户端绿色版保证安
- vsftpd-3.0.3-14.el6.1.x86_64.rpm
- vsftpd-3.0.3.tar
- FileZilla Server-v0.0.42 支持xp最后一个版
- linux版ftp的rpm包64位 ftp-0.17-54.el6.x86_
- H618B M29 刷机包及TFTP刷机教程内含dd
- CuteFTP XP5.0.2 序列号破解版
评论
共有 条评论