⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wrap.c

📁 简单 ftp 服务器及客户端
💻 C
字号:
#include<errno.h>#include"wrap.h"void perr_exit(const char *s){	perror(s);	exit(1);}int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr){	int n;again:	if((n = accept(fd, sa, salenptr)) < 0) {		if((errno == ECONNABORTED) || (errno == EINTR))			goto again;		else 			perr_exit("accept error");	}	return n;}void Bind(int fd, const struct sockaddr *sa, socklen_t salen){	if(bind(fd, sa, salen)<0)		perr_exit("bind error");}void Connect(int fd, const struct sockaddr *sa, socklen_t salen){	if(connect(fd, sa, salen)<0)		perr_exit("connect error");}void Listen(int fd, int backlog){	if(listen(fd, backlog)<0)		perr_exit("listen error");}int Socket(int family, int type, int protocol){	int n;	if((n = socket(family, type, protocol)) < 0)		perr_exit("socket error");	return n;}ssize_t Read(int fd, void *ptr, size_t nbytes){	ssize_t n;again:		if((n=read(fd, ptr, nbytes)) == -1) {			if(errno == EINTR)				goto again;			else				return -1;		}		return n;}ssize_t Write(int fd, const void *ptr, size_t nbytes){	ssize_t n;again:		if((n = write(fd, ptr, nbytes)) == -1) {			if(errno == EINTR)				goto again;			else				return -1;		}		return n;}void Close(int fd){	if(close(fd) == -1)		perr_exit("close error");}void  cftype(const char *path, char *cfile_type){	if(access(path, X_OK))		strcpy(cfile_type, "644");	else		strcpy(cfile_type, "755");}int iftype(const char *cfile_type, int * ifile_type){	if(!strcmp(cfile_type, "644")) {	   *ifile_type = 0644;		return 0;	}	if(!strcmp(cfile_type, "755")) {	   *ifile_type = 0755;		return 0;	}	return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -