[
网络中客户端Web浏览器的代理端口设置为“家电控制中心”的对应端口,浏览器将URL中输入的内容交给“家电控制中心”处理,经过域名解析,如果是IPv4地址,则“家电控制中心”的代理不进行处理,按照原来的模式发送请求;如果是IPv6的地址,则“家电控制中心”的代理将请求交给IPv6处理模块,调用系统的IPV6协议栈,实现与IPV6的通信。图2是“家电控制中心”对IPv4客户端的URL处理流程图。
2.2 浏览器的选择和多URL同时请求的解决方案
在客户端选择使用Netscape浏览器,因为在通过手动设置代理联入Internet 的时,IE要对其URL中输入的内容进行语法检查,而Netscape则完全不作任何检查,把从域名解析到数据转发的任务都交给“家电控制中心”,这样无论在URL中输入的是域名还是IPv4或IPv6地址,Netscape都会不加任何检查地送入“家电控制中心”,所以,客户端Web服务的接入和浏览工具选择Netscape。
由于“家电控制中心”要对一个浏览器的多个请求或者多个浏览器的多个请求同时作出反应,在具体实现时,使用“家电控制中心”的daemon侦听端口,使“家电控制中心”遇到请求就产生子进程进行处理,即通过socket函数创建监听套接字listenfd,并调用bind和listen函数将其变成一个监听套接口,使系统内核接收来自客户的连接请求。“家电控制中心”调用accept函数等待客户端的连接。当客户端Web浏览器发起的TCP连接请求转发到“家电控制中心”处理时,TCP使用三次握手建立连接,当握手完毕时,accept函数返回,其返回值是一个称为已连接描述字(connetcted descrIPtor)的新描述字connfd。“家电控制中心”用fork函数为这个描述字开启一个子进程,并用此子进程处理连接和通信,同时父进程仍保持监听状态。
另外,在实现“家电控制中心”的IPv4/IPv6双协议栈代理功能时,在处理监听套接口的同时,又要处理已连接套接口,还要处理多个描述字,在解决这个问题时用到了I/O复用技术。在I/O复用中,系统阻塞于select 调用,等待数据报套接口可读,当select返回套接口可读时,系统调用readline函数将数据报读到缓冲区中。在连接建立和传输过程中,“家电控制中心”为每一幅图片和每一个文本文件建立一个描述字,因此,在select的参数设置中要保证每一个描述字都是可读取的。
3 测试和结论
在测试环境中,家电局域网由“家电控制中心”、基于IPv4的信息家电和基于IPv6的信息家电。“家电控制中心”除具有用户管理、家电管理、信息格式转换等模块外,具有IPv4/IPv6双协议栈、Web代理服务、域名解析、IPv4/IPv6地址识别等功能。基于IPv4的信息家电和基于IPv6的信息家电都具有Web服务的功能,并有对应的控制/状态页面。客户端计算机是IPv4协议栈,Web浏览器使用Netscape,并将代理设置为“家电控制中心”。由于使用Netscape作为Web浏览器,操作系统均选用了Linux。在测试中,通过客户端实现了对两类家电的访问和控制。
[本文共有 2 页,当前是第 2 页] <<上一页 下一页>>
]