本书系统介绍了网络软件设计的原理和方法,详细讨论了在Windows环境上下的各种网络编程接口和网络通信程序设计技术,深入分析了各种设计划内方法的原理以及异常处理方法,主要内容包括:基本Net BIOS的网络编程,基于TCP/IP协议的网络编程,进程通信与分布计算,多线程结构的网络编程技术,直接网络编程的技术,网络数据包捕获与分析等,附录部分给出了常用网络API函数和错误代码.\r\n\r\n 本书遵循理论题与实践相结合的原则,在系统介绍理论的前题下,结合作者是实际工作经验,深入讨论了在工程项目中可能遇到的问题和解决问题的方法,并给出了适量的编程实例,,以飨读者.各章附有适量习惯,使于学生课后练习.本教材可作为高校计算机专业及相关专业研究生、本科生学习网络通信软件设计等到相关课程的教科书,也可作为从事计算机网络和数据通信工程技术人员的参考书。 \r\n\r\n \r\n
\r\n
第1章 网络编程基础 \r\n\r\n 1. 1 概述 \r\n\r\n 1. 2 ISO/OSI模型 \r\n\r\n 1. 3 网络编程接口 \r\n\r\n 1. 3. 1 基于NetBIOS的网络编程 \r\n\r\n 1. 3. 2 基于Winsock的网络编程 \r\n\r\n 1. 3. 3 直接网络编程 \r\n\r\n 1. 3. 4 基于物理设备的网络编程 \r\n\r\n 1. 4 网络通信方式 \r\n\r\n 1. 4. 1 面向连接的通信和无连接通信 \r\n\r\n 1. 4. 2 阻塞通信与非阻塞通信 \r\n\r\n 1. 4. 3 多播通信与广播通信 \r\n\r\n 1. 5 Win32 SDK编程基础 \r\n\r\n 1. 5. I Win32 SDK的基本概念 \r\n\r\n 1. 5. 2 Windows消息驱动机制 \r\n\r\n 1. 5. 3 Win32 SDK程序结构 \r\n\r\n 习题与思考题 \r\n\r\n 第2章 基于NetBIOS的网络编程 \r\n\r\n 2. 1 NetBIOS的基本概念 \r\n\r\n 2. 1. 1 NetBIOS概述 \r\n\r\n 2. 1. 2 LANA编号 \r\n\r\n 2. 1. 3 NetBIOS名字 \r\n\r\n 2. 1. 4 NetBIOS命令 \r\n\r\n 2. 1. 5 网络控制块(NCB) \r\n\r\n 2. 2 NetBIOS命令功能 \r\n\r\n 2. 2. 1 名字管理命令 \r\n\r\n 2. 2. 2 数据报通信命令 \r\n\r\n 2. 2. 3 会话通信命令 \r\n\r\n 2. 2. 4 控制和测试命令 \r\n\r\n 2. 3 网络编程设计要素 \r\n\r\n 2. 3. 1 对话设计 \r\n\r\n 2. 3. 2 通信协议与方式选择 \r\n\r\n 2. 3. 3 命令执行方式 \r\n\r\n 2. 3. 4 差错与超时控制 \r\n\r\n 2. 3. 5 分组长度限制 \r\n\r\n 2. 4 基本程序 \r\n\r\n 2. 4. 1 初始化程序 \r\n\r\n 2. 4. 2 加名字与删除名字 \r\n\r\n 2. 5 数据报通信程序设计 \r\n\r\n 2. 5. 1 数据报通信模型 \r\n\r\n 2. 5. 2 数据报通信程序 \r\n\r\n 2. 5. 3 组播与广播通信程序 \r\n\r\n 2. 6 会话通信程序设计 \r\n\r\n 2. 6. 1 会话通信模型 \r\n\r\n 2. 6. 2 会话通信程序 \r\n\r\n 2. 6. 3 关于会话的讨论 \r\n\r\n 习题与思考题 \r\n\r\n 第3章 基于TCP/IP协议的网络编程 \r\n\r\n 3. 1 概述 \r\n\r\n 3. 2 协议简介 \r\n\r\n 3. 2. 1 IP协议 \r\n\r\n 3. 2. 2 传输层协议 \r\n\r\n 3. 2. 3 客户机/服务器模式 \r\n\r\n 3. 3 地址与名字解析 \r\n\r\n 3. 3. 1 IP地址 \r\n\r\n 3. 3. 2 地址解析 \r\n\r\n 3. 3. 3 域名解析 \r\n\r\n 3. 4 网间进程通信及端口号 \r\n\r\n 3. 5 Winsock的基本概念 \r\n\r\n 3. 6 常用Winsock函数 \r\n\r\n 3. 6. 1 Winsock初始化函数 \r\n\r\n 3. 6. 2 基本Winsock函数 \r\n\r\n 3. 6. 3 数据传输函数 \r\n\r\n 3. 6. 4 字节顺序及地址转换函数 \r\n\r\n 3. 6. 5 网络信息查询函数 \r\n\r\n 3. 7 会话通信程序设计 \r\n\r\n 3. 7. 1 会话通信程序结构 \r\n\r\n 3. 7. 2 会话通信程序实例1 \r\n\r\n 3. 7. 3 会话通信程序实例2 \r\n\r\n 3. 8 数据报通信程序设计 \r\n\r\n 3. 8. 1 数据报通信程序结构 \r\n\r\n 3. 8. 2 数据报通信实例 \r\n\r\n 3. 9 Winsock多播与广播通信程序设计 \r\n\r\n 3. 9. 1 广播通信 \r\n\r\n 3. 9. 2 多播通信 \r\n\r\n 3. 10 Winsock I/O模型 \r\n\r\n 3. 10. 1 套接字的阻塞与非阻塞模式 \r\n\r\n 3. 10. 2 I/O模型 \r\n\r\n 习题与思考题 \r\n\r\n 第4章 进程间通信 \r\n\r\n 4. 1 进程与进程间通信 \r\n\r\n 4. 2 创建一个进程 \r\n\r\n 4. 3 终止进程的运行 \r\n\r\n 4. 4 进程通信 \r\n\r\n 4. 4. 1 进程通信概述 \r\n\r\n 4. 4. 2 进程通信分类 \r\n\r\n 4. 5 内存文件映射 \r\n\r\n 4. 5. 1 创建内存文件映射 \r\n\r\n 4. 5. 2 释放内存文件映射 \r\n\r\n 4. 5. 3 利用内存文件映射共享数据 \r\n\r\n 4. 5. 4 利用事件实现进程同步 \r\n\r\n 习题与思考题 \r\n\r\n 第5章 多线程结构的网络编程 \r\n\r\n 5. 1 创建线程 \r\n\r\n 5. 1. 1 线程与进程 \r\n\r\n 5. 1. 2 创建一个线程 \r\n\r\n 5. 1. 3 线程的挂起与激活 \r\n\r\n 5. 1. 4 线程的优先级 \r\n\r\n 5. 1. 5 线程的生命期 \r\n\r\n 5. 2 线程同步 \r\n\r\n 5. 2. 1 等待函数 \r\n\r\n 5. 2. 2 临界区 \r\n\r\n 5. 2. 3 用互斥量对象实现线程同步 \r\n\r\n 5. 2. 4 用信号量对象实现线程同步 \r\n\r\n 5. 2. 5 用事件对象实现线程同步 \r\n\r\n 5. 3 多线程结构的网络编程技术 \r\n\r\n 5. 3. 1 并发环境下的网络编程 \r\n\r\n 5. 3. 2 多线程编程模型 \r\n\r\n 5. 3. 3 多线程Winsock编程实例 \r\n\r\n 习题与思考题 \r\n\r\n 第6章 动态链接库在网络程序中的应用 \r\n\r\n 6. 1 动态链接库概述 \r\n\r\n 6. 2 动态链接库的特点 \r\n\r\n 6. 3 创建动态链接库 \r\n\r\n 6. 3. 1 源代码文件(. C)的结构 \r\n\r\n 6. 3. 2 模块定义文件(. DEF)的结构和各段的意义 \r\n\r\n 6. 3. 3 函数声明文件(. H) \r\n\r\n 6. 3. 4 工程文件(. PRJ) \r\n\r\n 6. 4 调用动态链接库 \r\n\r\n 6. 4. 1 隐式链接方式加载DLL \r\n\r\n 6. 4. 2 显式方式加载DLL \r\n\r\n 习题与思考题 \r\n\r\n 第7章 直接网络编程技术 \r\n\r\n 7. 1 概述 \r\n\r\n 7. 2 数据链路层帧与网络协议数据单元结构 \r\n\r\n 7. 2. 1 以太网数据链路层帧结构 \r\n\r\n 7. 2. 2 TCP/IP协议族协议数据单元结构 \r\n\r\n 7. 2. 3 TCP/IP网络层协议及其协议数据单元 \r\n\r\n 7. 2. 4 路由协议 \r\n\r\n 7. 2. 5 TCP/IP传输层协议及其协议数据单元 \r\n\r\n 7. 3 原始套接字编程 \r\n\r\n 7. 3. 1 概念 \r\n\r\n 7. 3. 2 原始套接字的ICMP实现 \r\n\r\n 7. 4 基于Winpcap的网络数据包捕获技术 \r\n\r\n 7. 4. 1 Winpcap简介 \r\n\r\n 7. 4. 2 数据包捕获驱动器结构 \r\n\r\n 7. 4. 3 数据包捕获驱动程序API(PACKET. DLL)的使用 \r\n\r\n 7. 4. 4 数据包捕获函数库(wpcap. lib)的使用 \r\n\r\n 7. 5 基于libnet的网络数据包构造技术 \r\n\r\n 7. 5. 1 libnet简介 \r\n\r\n 7. 5. 2 libnet使用方法 \r\n\r\n 7. 5. 3 libnet函数 \r\n\r\n 7. 5. 4 应用程序示例 \r\n\r\n 习题与思考题 \r\n\r\n 附录1 NetBIOS命令代码表 \r\n\r\n 附录2 NetBIOS错误代码表 \r\n\r\n 附录3 Winsock错误代码表 \r\n\r\n 附录4 Winsock库函数参考 \r\n\r\n WindowsSocket 1. 1库函数参考 \r\n\r\n WindowsSocket 2扩展库函数参考 \r\n\r\n 附录5 Ping程序示例 \r\n\r\n 参考文献 \r\n
\r\n
近年来, 计算机网络技术得到了快速发展, 日益增长的网络应用需要大量的熟悉网络应用程序设计的人才. 同时, 只有通过网络编程, 才能在更深的层次去理解网络通信协议的工作原理, 并在此基础上进行各种网络应用程序的开发.
网络编程是利用网络编程接口来编写网络信息交换的应用程序. 本书主要介绍常规网络编程方法. 底层网络编程方法. 并发程序设计方法以及相关的Win32高级编程技术. 常规网络编程接口主要包括NetBIOS和Winsock编程接口, 底层网络编程主要讨论了在网络层和数据链路层的编程方法, 并发程序设计主要介绍利用多线程结构实现高性能并发网络程序设计的方法. 另外, 本书还介绍了进程间通信及动态链接库等相关开发技术.
全书共分为7章. 第1章是网络编程基础, 介绍计算机网络程序设计的一些基础知识及
内容. 概念和方法. 第2章介绍基于NetBIOS的网络编程方法, 主要介绍基于NetBIOS编程的原理. 方法和常用命令, 详细讨论了NetBIOS编程模型. 编程技巧及一些基本程序. 第3章介绍基于Winsock的网络编程技术, 主要介绍TCP/IP协议. 的原理, Winsock基本概念与编程接口, WinsockAPI接口函数. 数据结构及编程方法, 并给出了大量的编程实例. 第4章是进程间通信机制(IPC), 根据作者以往的编程经验, 介绍了在实际网络程序设计中通常会使用到的IPC方法, 重点讨论了利用文件映射的共享内存机制实现进程间通信的原理和方法. 第5章是多线程结构的网络编程, 主要介绍线程的基本概念. 线程同步机制及并发程序设计方法, 并给出多线程并发网络通信程序实例. 第6章介绍动态链接库的概念. 作用. 设计方法以及在实际工程中的应用, 并给出了编程实例. 第7章讲述直接网络编程. 由于网络技术的飞速发展, 网络复杂性和规模的不断增长, 还需要有一些网络工具来分析. 诊断和测试网络, 并确保网络的安全. 而这些网络诊断测试和安全工具通常需要在较低的层次(链路层或网络层)操作网络. 本章主要介绍一些能直接对网络底层进行编程的方法.
本书可作为大学本科及以上层次计算机及相关专业的教科书, 也可以作为工程技术人员计算机培训教程, 参考学时为50~60学时. 建议第7章作为本科层次的选学内容. 学习本门课程之前, 读者最好已掌握有关C语言程序设计. 计算机网络. 操作系统等方面的知识. 因此, 建议在大学三年级下学期开设本课程. 本书也可作为从事网络研究和软件开发人员的自学教材和技术参考书.
网络编程与开发是一门实践性很强的技术, 因此需要读者通过大量的上机练习来理解网络编程概念和程序设计方法. 本书在介绍每一部分内容时尽量做到实用易懂, 并提供了大量的编程实例, 所有程序均在VC++6. 0下调试通过. 每章附有一定量实践性的习题可以选用, 建议提供20学时的上机实验课时.
西安交通大学的李增智教授. 唐亚哲副教授对本书的全部书稿进行认真. 细致的审阅, 并提出了许多宝贵的修改意见, 在此表示诚挚的感谢!
由于编者水平有限, 书中难免存在一些缺点和错误, 敬请广大读者批评指正.
编 者
2003年7月1日
无封面