Linuxsocket编程基础.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linuxsocket编程基础

 HYPERLINK /lr-ting/archive/2012/08/24/2652482.html linux 网络编程-基础篇 #Socket简介 是一个编程接口 是一种特殊的文件描述符(everything in Unix is a file) 并不仅限于TCPIP协议 面向连接(Transmission Control Protocol - TCPIP) 无连接(User Datagram Protocol-UDP 和 Inter-Network Packet Exchange-IPX) #Socket类型 流式套接字(SOCK_STREAM) 提供了一个面向连接,可靠的数据传输服务,数据无差错,无重复的发送且 按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是 字节流,无长度限制 数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证, 数据可能丢失或重复,顺序发送,可能乱序接收 原始套接字(SOCK_RAW) 可以对较低层次协议如IP,ICMP直接访问 #IP地址 IP地址是Internet中主机的标识 Internet中的主机要与别的机器通信必须具有一个IP地址 IP地址为32位(IPV4)或者128位(IPV6) 每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包 选择路由 表示形式:常用点分形式,如0,最后都会转换为一个32位的无符号 整数。 #IP地址的转换 inet_aton() 将strptr所指的字符串转换成32位的网络字节序二进制值 int inet_aton(const char *strptr, struct in_addr *addrptr); inet_addr() 功能同上,返回转换后的地址 in_addr_t inet_addr(const char *strptr); inet_ntoa() 将32位网络字节序二进制地址转换成点分十进制的字符串。 char *inet_ntoa(struct in_addr inaddr); #端口号 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号 来区分 TCP端口号与UDP端口号独立(协议不同可以使用同一个端口) 三无组:协议,IP,端口 端口号一般由IANA(Internet Assigned Numbers Authority)管理 众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由 UNIX系统占用 已登记端口:1024~49151 动态或私有端口:49152~65535 #字节序 不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO): 小端序(little-endian)-低字节存储在低地址 将低字节存储在起始地址,称为Little-Endian字节序,Intel,AMD等 采用的是这种方式 大端序(big-endian)-高序字节存储在低地址 将高字节存储在起始地址,称为Big-Endian字节序,由ARM,Motorola 等所采用 网络中传输的数据必须按网络字节序,即大端字节序 在大部分PC机上,当应用进程将整数送入socket前,需要转化成网络字节序;当 应用进程从socket取出整数后,要转化成小端字节序 #字节序转换函数 把给定系统所采用的字节序称为主机字节序,为了避免不同类别主机之间在数据 交换时由于对于字节序的不用而导致的差错,引入了网络字节序 主机字节序到网络字节序: u_long htonl(u_long hostlong); u_short htons(u_short short); 网络字节序到主机字节序 u_long ntohl(u_long hostlong); u_short ntohs(u_short short); #网络编程相关API int Socket(int domain, int type, int protocol); int bind(int Sockfd, struct sockaddr *my_addr, int addrlen); int listen(int sockfd, in backlog); int accept(int sockfd, struct sockaddr *addr, Socklen_t *addrlen); int connect(int sockfd, const struct sockaddr *addr, Socklen_t addrlen); ssize_t send(int sockfd, const void *buf, size_t len, int flags);

文档评论(0)

zhanghc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档