15.3    网络信息 当眼下为止,客户和server程序一直是吧地址和port号编译到它们自己的内部. 对于一个更通用的server和客户程序来说.能够通过网络信息函数来决定应该使用的地址和port. 假设有足够的权限,能够将自己的服务加入到/etc/services文件里的已知服务列表中.并在这个文件里为port号分配一个名字,使用户能够使用符号化的服务名而不是port号的数字. 类似地.假设给定一个计算机的名字.能够通过调用解析地址的主机数据库函数来确定它的IP地址.这些函数通过查询网络…
域名与IP信息解析 /etc/hosts 文件中有部分IP地址与域名主机名的信息 /etc/resolv.conf 里面有DNS服务器的IP地址 struct hostent { char *h_name; //主机的正式名字 char **h_aliases; //主机备选名称,以NULL结尾的链表 int h_addrtype; //返回地址的类型 有两种 AF_INET或 AF_INET6 int h_length; //地址长度 以字节为单位 char **h_addr_list; //…
UDP广播通信 单播:一对一,TCP和UDP均可完成 广播:只能UDP完成.广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口.路由器默认不转发任何广播数据包.故广播在局域网范围内. 组播:只有UDP可以完成.发送消息到同一个组播组的主机.视频电话.视频会议多采用. 广播IP地址:主机号全1.网络号正常 广播MAC地址:全1,即FF:FF:FF:FF:FF:FF 广播数据帧格式 处理过程: 网卡驱动程序对比自己的MAC地址与目的MAC地址,发现是广播MAC地址,统一接收…
UDP网络通信流程 UDP没有connect的过程,故发送数据时需要指明目的地址,不能使用read/write/send/recv. 采用sendto()和recvfrom() ssize_t sendto (int __fd, __const void *__buf, size_t __n, int __flags, __CONST_SOCKADDR_ADR __addr, socklen_t __addr_len) 向某一主机发送字节序列 参数1:从本机哪个socket发送数据 参数2:欲发…
socket信号驱动 为了使一个套接字能够使用信号驱动I/O,至少需要以下3步操作. 1.安装SIGIO信号 2.套接字的拥有者设定为当前进程.因为SIGIO信号只会送到socket拥有者进程. 通过fcntl的F_SETOWN 3.套接字必须被允许使用异步I/O. 通过fcntl的F_SETFL,设置为O_ASYNC 在UDP通信中,下面情况会产生SIGIO信号 在TCP通信中,下面情况会产生SIGIO信号 例子: 下面的代码好奇怪,说是UDP的,但是发送接收用的是send, recv 而且客…
UDP组播通信 组播IP地址: D类IP地址  1110.**********  224.0.0.1 ~ 239.255.255.255 组播MAC地址:低23位,直接对应IP地址, 从右数第24位为0, 前24位为 01:00:5E 最终数据帧如图 局域网所有主机网卡都会收到这一消息,但是只有加入到组内的主机才接受该数据包.组播不影响同一局域网内其他主机的效率. 将自己的主机IP地址加入到组播地址组: setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSH…
简单介绍 很多类型的驱动程序编程都须要了解一些虚拟内存子系统怎样工作的知识 当遇到更为复杂.性能要求更为苛刻的子系统时,本章所讨论的内容迟早都要用到 本章的内容分成三个部分 讲述mmap系统调用的实现过程 讲述怎样跨越边界直接訪问用户空间的内存页 讲述了直接内存訪问(DMA)I/O操作,它使得外设具有直接訪问系统内存的能力 Linux的内存管理 地址类型 Linux是一个虚拟内存系统,这意味着用户程序所使用的地址与硬件使用的物理地址是不等同的 有了虚拟内存,在系统中执行的程序能够分配比物理内存很…
一.基本用法 1.要使用<canvas>元素,必须先设置其 width 和 height 属性,指定可以绘图的区域大小.能通过 CSS 为该元素添加样式,如果不添加任何样式或者不绘制任何图形,在页面中是看不到该元素的. 2.要在这块画布(canvas)上绘图,需要取得绘图上下文.而取得绘图上下文对象的引用,需要调用getContext()方法并传入上下文的名字.在使用<canvas>元素之前,首先要检测 getContext()方法是否存在,这一步非常重要.检测可以用如下方法进行:…
12.8    多线程 之前,总是让程序的主线程只创建一个线程.这节将演示怎样在同一个程序中创建多个线程,然后怎样以不同于其启动顺序将它们合并在一起.此外,还演示多线程编程时easy出现的时序问题. 编敲代码thread8.c /************************************************************************* > File Name: thread8.c > Description: thread8.c程序创建多个线程.然后以不…
第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能终止 17 STOP 无条件停止运行,但不终止 18 TSTP 停止或暂停,但继续在后台运行 19 CONT 在STOP或TSTP之后恢复执行 默认情况下,bash shell会忽略收到的任何SIGQUIT(3)和SIGTERM(5)信号. 如果bash shell收到了SIGHUP信号,它会退出.…