好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

socket编程头文件和常用函数.doc

4页
  • 卖家[上传人]:壹****1
  • 文档编号:386638090
  • 上传时间:2022-10-15
  • 文档格式:DOC
  • 文档大小:29.50KB
  • / 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编程常用函数structsockadd{unsignedshortsa_family;charsa_data[14];}用于bind,connect,recvfrom,sendtostructsockaddr_in{sa.sin_port=htons(3490);shortintsin_family;//AF_INETunsignedshortintsin_port;//网络字节顺序structin_addrsin_addr;//structin_addr{unsignedlongs_addr;}unsignedcharsin_zero[8];}sample:structsockaddr_insa;sa.sin_family=AF_INET;sa.sin_addr.s_addr=inet_addr(”132.241.5.10〃);baero(&(sa.sin_zero),8);转换函数:unsignedlonginet_addr(constchar*cp);char*inet_ntoa(strctin_addrin);字节顺序转换:htons()——-Hosttonetworkshorthtonl()Hosttonetworklongntohs()——-Networktohostshortntohl()Networktohostlong取得本地主机名intgethostname(char*hostname,size_tsize);取得本地信息intgetsockname(intsockfd,structsockaddr*addr,int*addrlen);例如:structsockaddr_insa;intlen=sizeof(sa);getpeername(sockfd,(structsockaddr*)&sa,&len);printf(”localIP:%s”,inet_ntoa(sa.sin_addr.s_addr));获得DNS信息structhostent*gethostbyname(constchar*name);structhostent*gethostbyaddr(constchar*addr,intlen,inttype);读取或改变socker属性intgetsockopt(intsockfd,intlevel,intname,char*value,int*optlen);intsetsockopt();对于socket编程:level—般为SOL_SOCKET常用:SO_RCVTIMEO,SO_SNDTIMEOSO_SNDBUF,SO_RCVBUF:buffersize•••・・网络连接intsocker(intdomain,inttype,intprotocol);return-1meanserrordomain:AF_INETprotocol:一般0TCP:sockfd=socket(AF_INET,SOCK_STREAM,0);UDP:sockfd=socket(AF_INET,SOCK_DGRAM,0);绑定端口intbind(intsockfd,structsockaddr*sa,intaddrlen);连接网络(TCP)intconnect(intsockfd,structsockaddr*servaddr,intaddrlen);监听端口(TCP)intlisten(intsockfd,intqueue_length);响应连接请求(TCP)intaccept(intsockfd,structsockaddr*addr,int*addrlen);关闭intclose(intsockfd);intshutdown(intsockfd,inthow);0—-禁接收1—禁发送2—进收发轮询intselect(intnumfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout);注意windows和unix中,函数返回后fd_set内容发生了改变,下次使用必须重新赋值。

      接收和发送:TCP:intsend(ints,constvoid*buf,intlen,intflags);intrecv(....);UDP:intsendto(ints,constvoid*buf,intlen,intflags,conststructsockaddr*to,inttolen);intrecvfrom(.);基于消息的方式:intsendmsg(ints,conststructmsghdr*msg,intflags);intrecvmsg(.);。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.