- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* FD_ZERO(fd_set *fdset):将set清零,清空fdset与所有文件句柄的联系。 FD_SET(int fd, fd_set *fdset):将fd加入set,建立文件句柄fd与fdset的联系。 FD_CLR(int fd, fd_set *fdset):将fd从set中清除,清除文件句柄fd与fdset的联系。 FD_ISSET(int fd, fdset *fdset):检查fdset联系的文件句柄fd是否可读写,0表示可读写。 这里是一个简单的测试单个文件描述符可读性的例子: int isready(int fd) { int rc; fd_set fds; struct timeval tv; FD_ZERO(fds); FD_SET(fd,fds); tv.tv_sec = tv.tv_usec = 0; rc = select(fd+1, fds, NULL, NULL, tv); if (rc 0) return -1; return FD_ISSET(fd,fds) ? 1 : 0; } * 操作系统支持inetd Internet 超级服务器守护进程 inetd 守护进程在启动时激活读取/etc/inetd.conf 文件决定应当监听的服务器 * daytime, time, echo, discard, chargen, 和 auth 都是inetd内置的服务。 端口 7 echo Echo 回显9 discard Discard 丢弃 13 daytime Daytime 时间19 chargen Character Generator 字符发生器 37 time Time 时间 * * * * * bind()系统调用是将本地套接字地址(包括本地主机地址和本地端口)与所创建的套接字联系起来,即将本地套接字赋予该套接字。即:将新创建的sockid与address绑定。 只有给套接字一个地址,其他进程才能找到它,——“捆绑”地址至该套接字,或称命名套接字。 addr_len:表示本地套接字地址长度。它是以字节为单位的本地套接字地址结构的长度。 为了简化本地地址绑定可以使用常量INADDR_ANY (AF_INET) 通配符地址告诉系统本服务器进程将接受任意一个Internet 接口的连接,假如有多个接口的话。INADDR_ANY 的具体含义是,绑定到。此时,对所有的地址都将是有效的,如果系统考虑冗余,采用多个网卡的话,那么使用此种bind,将在所有网卡上进行绑定。在这种情况下,你可以收到发送到所有有效地址上数据包。 相似地,本地端口也可以不指定(指定为0) 这种情况下系统会选择一个端口号。 * * 客户是套接字侦听队列中的第一个悬挂连接。 返回一个新的已连接的Socket,使用这个Socket可以和客户进行通信,而原来的监听Socket仍然可以接受其他客户的连接。 是一个阻塞的操作,在远程参与者(即客户机)没有建立起连接前,它不会返回任何参数,一旦连接成功,它将返回一个表示新连接的新的套接字,并且address参数还包括了远程参与者的地址。 一个服务器通常仅仅创建一个监听套接口,它在该服务器的生命期内一直存在。内核为每个由服务器进程接受的客户连接创建一个已连接套接口。当服务器完成对于某个给定客户的服务时,相应的已连接套接口就被关闭。 * 实际上,客户机通常只描述远程参与者的地址,让系统自动填写本地信息,由于服务器常在共知的端口上监听消息,一般客户机并不管自己用哪个端口,os可以为它选一个未用的即可。 * 服务器的工作流程是这样的:首先调用socket函数创建一个Socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,然后调用listen在相应的socket上监听,当accpet接收到一个连接服务请求时,将生成一个新的socket。 * 计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。Internet上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位字节优先方式存储数据的机器,在Internet上传输数据时就需要进行转换,否则就会出现数据不一致。 下面是几个字节顺序转换函数: ·htonl():把32位值从主机字节序转换成网络字节序 ·htons():把16位值从主机字节序转换成网络字节序 ·ntohl():把32位值从网络字节序转换成主机字节序 ·ntohs():把16位值从网络字节序转换成主机字节序 * 计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。
原创力文档


文档评论(0)