socket编程头文件和常用函数.doc_第1页
socket编程头文件和常用函数.doc_第2页
socket编程头文件和常用函数.doc_第3页
socket编程头文件和常用函数.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的函数 其他在网络程序中常见的头文件unistd.h:提供通用的文件、目录、程序及进程操作的函数errno.h:提供错误号errno的定义,用于错误处理fcntl.h:提供对文件控制的函数time.h:提供有关时间的函数crypt.h:提供使用DES加密算法的加密函数pwd.h:提供对/etc/passwd文件访问的函数shadow.h:提供对/etc/shadow文件访问的函数pthread.h:提供多线程操作的函数signal.h:提供对信号操作的函数sys/wait.h、sys/ipc.h、sys/shm.h:提供进程等待、进程间通讯(IPC)及共享内存的函数建议:在编写网络程序时,可以直接使用下面头文件代码#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 涉及到用户权限及密码验证问题时加入如下语句:#include #include #include 需要注意的是,应该在编译时链接加密算法库,即增加编译选项:-lcrypt 涉及到文件及时间操作加入如下语句:#include #include #include #include #include 涉及到多进程操作时加入如下语句:#include #include #include #include 涉及到多线程操作时加入如下语句:#include #include 需要注意的是,应该在编译时链接线程库,即增加编译选项:-lthreadsocket编程常用函数struct sockadd unsigned short sa_family;char sa_data14;用于bind, connect, recvfrom, sendtostruct sockaddr_in short int sin_family; /AF_INETunsigned short int sin_port; /网络字节顺序struct in_addr sin_addr; /struct in_addr unsigned long s_addr; unsigned char sin_zero8;sample:struct sockaddr_in sa;sa.sin_family = AF_INET;sa.sin_port = htons(3490);sa.sin_addr.s_addr = inet_addr(”132.241.5.10);baero(&(sa.sin_zero),8);转换函数:unsigned long inet_addr(const char *cp);char* inet_ntoa(strct in_addr in);字节顺序转换:htons()-Host to network shorthtonl()Host to network longntohs()-Network to host shortntohl()Network to host long取得本地主机名int gethostname (char *hostname, size_t size);取得本地信息int getsockname(int sockfd, struct sockaddr* addr, int * addrlen);例如:struct sockaddr_in sa;int len=sizeof(sa);getpeername(sockfd, (struct sockaddr*)&sa, &len);printf(”local IP:%s”, inet_ntoa(sa.sin_addr.s_addr);获得DNS信息struct hostent * gethostbyname(const char* name);struct hostent* gethostbyaddr(const char* addr, int len, int type);读取或改变socker属性int getsockopt(int sockfd, int level, int name, char* value, int* optlen);int setsockopt(.);对于socket编程:level一般为SOL_SOCKET常用:SO_RCVTIMEO, SO_SNDTIMEOSO_SNDBUF, SO_RCVBUF: buffer size.网络连接int socker(int domain, int type, int protocol);return -1 means errordomain : AF_INETprotocol: 一般0TCP: sockfd = socket(AF_INET, SOCK_STREAM, 0);UDP: sockfd = socket(AF_INET, SOCK_DGRAM, 0);绑定端口int bind(int sockfd, struct sockaddr *sa, int addrlen);连接网络(TCP)int connect(int sockfd, struct sockaddr *servaddr, int addrlen);监听端口(TCP)int listen(int sockfd, int queue_length);响应连接请求(TCP)int accept(int sockfd, struct sockaddr *addr, int *addrlen);关闭int close(int sockfd);int shutdown(int sockfd, int how);0-禁接收1禁发送2进收发轮询int select(int numfds, fd_set *readfds, fd_set * writefds, fd_set * exceptfds, struct timeval* timeout);注意windows和unix中,函数返回后fd_set内容发生了改变,下次使用必须重新赋值。接收和发送:TCP: int send(int s, const void* buf, int len, int flags);int recv(.);UDP: int sendto(int s, const void* buf, i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论