Linux下的socket函数接口
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-27
最近学习了Linux下面的tcp编程,Linux系统下提供了基本的socket函数,但是缺少了一些错误处理机制.下面是自己总结的一些接口程序,希望大家一起完善.
/*wrap.h文件*/
/************************************************ * The package about the tcp communication * in Linux OS, including the error handling. *************************************************/ #ifndef WRAP_H #define WRAP_H #include <stdlib.h> #include <errno.h> #include <sys/socket.h> void perr_exit(const char *s); int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr); void Bind(int fd, const struct sockaddr *sa, socklen_t salen); void Connect(int fd, const struct sockaddr *sa, socklen_t salen); void Listen(int fd, int backlog); int Socket(int family, int type, int protocol); void Close(int fd); ssize_t Read(int fd, void *ptr, size_t nbytes); ssize_t Write(int fd, const void *ptr, size_t nbytes); ssize_t Readn(int fd, void *vptr, size_t n); ssize_t Writen(int fd, const void *vptr, size_t n); #endif /*wrap.c文件*/ #include "wrap.h" /********************************************************************* * Name : perr_exit * Description : exit the function * Input : the error string * Output : * Return : * Others : by jzk 2009.12.02 **********************************************************************/ void perr_exit(const char *s) { perror(s); exit(1); } /********************************************************************* * Name : Accept * Description : accept a connection on a socket * Input : fd---a socket that has been created * sa---a pointer to a sockaddr structure * salenptr---actual size of the peer address * Output : * Return : the descriptor for the accepted socket * Others : by jzk 2009.12.02 **********************************************************************/ int Accept(int fd, struct sockaddr *sa, socklen_t *salenptr) { int n; again: if((n = accept(fd, sa, salenptr)) < 0) { if((ECONNABORTED == errno) || (EINTR == errno)) goto again; else perr_exit("accept error"); } return n; } /********************************************************************* * Name : Bind * Description : bind a name to a socket * Input : fd---a socket that has been created * sa---a pointer to a sockaddr structure * salen---the size of the address structure * Output : * Return : * Others : by jzk 2009.12.02 **********************************************************************/ void Bind(int fd, const struct sockaddr *sa, socklen_t salen) { if(bind(fd, sa, salen) < 0) perr_exit("bind error"); } /****************************************************************** |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: select循环的用法举例下一篇: Linux网络的基本配置详解
关于Linux下的socket函数接口的所有评论