1 Star 0 Fork 0

Velcon-Zheng/bamdst

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
knetfile.h 1.57 KB
一键复制 编辑 原始数据 按行查看 历史
Shi Quan 提交于 2014-11-18 11:57 . typechange: bedutil.c
#ifndef KNETFILE_H
#define KNETFILE_H
#include <stdint.h>
#include <fcntl.h>
#ifndef _WIN32
#define netread(fd, ptr, len) read(fd, ptr, len)
#define netwrite(fd, ptr, len) write(fd, ptr, len)
#define netclose(fd) close(fd)
#else
#include <winsock2.h>
#define netread(fd, ptr, len) recv(fd, ptr, len, 0)
#define netwrite(fd, ptr, len) send(fd, ptr, len, 0)
#define netclose(fd) closesocket(fd)
#endif
// FIXME: currently I/O is unbuffered
#define KNF_TYPE_LOCAL 1
#define KNF_TYPE_FTP 2
#define KNF_TYPE_HTTP 3
typedef struct knetFile_s {
int type, fd;
int64_t offset;
char *host, *port;
// the following are for FTP only
int ctrl_fd, pasv_ip[4], pasv_port, max_response, no_reconnect, is_ready;
char *response, *retr, *size_cmd;
int64_t seek_offset; // for lazy seek
int64_t file_size;
// the following are for HTTP only
char *path, *http_host;
} knetFile;
#define knet_tell(fp) ((fp)->offset)
#define knet_fileno(fp) ((fp)->fd)
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _WIN32
int knet_win32_init();
void knet_win32_destroy();
#endif
knetFile *knet_open(const char *fn, const char *mode);
/*
This only works with local files.
*/
knetFile *knet_dopen(int fd, const char *mode);
/*
If ->is_ready==0, this routine updates ->fd; otherwise, it simply
reads from ->fd.
*/
off_t knet_read(knetFile *fp, void *buf, off_t len);
/*
This routine only sets ->offset and ->is_ready=0. It does not
communicate with the FTP server.
*/
off_t knet_seek(knetFile *fp, int64_t off, int whence);
int knet_close(knetFile *fp);
#ifdef __cplusplus
}
#endif
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/Velcon-Zheng/bamdst.git
git@gitee.com:Velcon-Zheng/bamdst.git
Velcon-Zheng
bamdst
bamdst
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385