目录 第1章绪论1 1.1TCP/IP协议简介1 1.2网络编程的重要术语3 1.2.1套接字及其类型3 1.2.2网间进程通信的标识4 1.2.3客户机/服务器模式5 1.3C#网络编程概述7 1.3.1常用的网络组件7 1.3.2寻找IP地址的类和方法8 1.3.3数据流的类型与应用9 1.3.4多线程技术12 1.3.5Windows API函数调用14 1.4套接字编程原理16 1.4.1面向连接的套接字调用流程16 1.4.2无连接套接字调用流程16 1.4.3Socket类的基本使用18 1.4.4套接字的简单应用实例22 小结23 实验项目23 第2章主机扫描程序设计25 2.1活动主机探测技术25 2.1.1ICMP协议介绍26 2.1.2基于ICMP的探测原理28 2.1.3活动主机探测程序设计29 2.2端口扫描技术35 2.2.1端口扫描器35 2.2.2端口扫描技术分类36 2.3TCP全连接扫描程序设计40 2.3.1流程设计40 2.3.2程序实现40 2.4高级端口扫描程序设计44 2.4.1界面设计44 2.4.2程序实现45 2.5网站可达性测量程序设计57 2.5.1系统设计思路57 2.5.2数据库设计58 2.5.3程序实现59 小结70 实验项目70 第3章串口通信程序设计72 3.1串口通信基本原理和应用方法72 3.1.1串口通信原理72 3.1.2串口通信仿真设计方法76 3.2串口通信编程类介绍77 3.2.1SerialPort类介绍78 3.2.2SerialPort的使用79 3.2.3C# SerialPort运行方式 79 3.3串口通信编程实例80 3.3.1串口通信参数设置80 3.3.2主程序设计82 3.3.3串口通信程序测试87 小结88 实验项目88 第4章基于TCP协议的程序设计89 4.1TCP协议介绍89 4.1.1TCP数据包格式90 4.1.2TCP协议的通信特点90 4.1.3TCP的常见端口91 4.2阻塞/非阻塞模式及其应用91 4.2.1典型的阻塞模式91 4.2.2阻塞模式的特点92 4.2.3阻塞模式的效率提升方法93 4.2.4非阻塞模式及其应用94 4.3同步套接字编程技术95 4.3.1服务器的程序设计95 4.3.2客户机的程序设计100 4.4异步套接字编程技术103 4.4.1客户机发出连接请求104 4.4.2服务器接收连接请求104 4.4.3服务器发送和接收数据105 4.5基于TcpClient类和TcpListener类的编程106 4.5.1TcpClient类的使用方法107 4.5.2TcpListener类的使用方法108 4.6网络游戏程序设计109 小结120 实验项目121 第5章基于UDP协议的程序设计122 5.1UDP协议介绍122 5.1.1UDP数据包格式123 5.1.2UDP协议的主要特性123 5.2使用UdpClient类进行编程124 5.2.1UdpClient类的使用方法124 5.2.2UdpClient类的应用实例126 5.3网络广播程序设计128 5.3.1广播程序设计示例129 5.3.2套接字选项设置方法130 5.4多播程序设计132 5.4.1多播地址132 5.4.2Internet组管理协议IGMP133 5.4.3多播编程方法134 5.4.4多播编程实例136 小结139 实验项目139 第6章网络抓包程序设计141 6.1网络抓包软件体系结构分析141 6.1.1网络抓包技术分析141 6.1.2WinPcap的体系结构142 6.2基于WinPcap的抓包程序设计143 6.2.1WinPcap编程基础143 6.2.2WinPcap应用实例147 6.3基于SharpPcap的抓包程序设计153 6.3.1SharpPcap应用入门153 6.3.2常用数据结构和函数154 6.4基于原始套接字的抓包程序设计157 6.4.1设计实例说明157 6.4.2关键代码分析157 小结162 实验项目162 第7章木马程序设计164 7.1木马工作原理164 7.1.1木马系统的组成165 7.1.2木马的功能和特征165 7.1.3木马的传播与运行166 7.2木马程序的常规设计167 7.2.1功能设计167 7.2.2流程图设计167 7.2.3命令规则设计表167 7.2.4文件操控模块流程169 7.2.5运行界面及说明169 7.2.6主要程序说明171 7.3远程屏幕监视技术175 7.3.1屏幕捕获过程解析175 7.3.2屏幕捕获程序设计177 7.3.3基于远程调用信道的远程屏幕监视程序设计181 7.4基于TCP协议的远程屏幕监视程序设计190 7.4.1控制端190 7.4.2客户端192 7.5键盘鼠标控制程序设计195 7.5.1键盘鼠标控制方法195 7.5.2键盘钩子说明195 7.5.3键盘鼠标的网络控制程序设计197 小结203 实验项目203 第8章IP音频网络通信程序设计205 8.1音频编程方法概述205 8.2基于多媒体控件的音频播放程序设计206 8.3DirectX组件的工作原理208 8.3.1DirectX简介208 8.3.2DirectSound简介210 8.3.3声音的播放过程211 8.4基于DirectX组件的IP语音网络程序设计212 8.4.1利用DirectX组件实现音频播放212 8.4.2利用DirectX组件实现音频采集213 8.4.3基于DirectX组件的IP电话程序设计221 8.5基于低级音频函数的IP电话程序设计229 8.5.1低级音频函数的调用方法229 8.5.2利用低级音频函数实现音频采集与播放233 8.5.3利用低级音频函数实现语音通信程序设计241 小结243 实验项目244 第9章网络视频传输程序设计245 9.1视频编码技术245 9.1.1视频编码分类245 9.1.2视频格式转换248 9.2基于VFW的视频采集与存储249 9.2.1VFW介绍249 9.2.2视频数据处理技术250 9.2.3视频监控程序设计254 9.3基于VFW的视频传输257 9.3.1视频传输流程257 9.3.2视频发送端程序设计259 9.3.3视频接收端程序设计262 小结265 实验项目265 第10章Email服务程序设计266 10.1概述266 10.1.1工作原理266 10.1.2相关的协议268 10.2SMTP协议编程269 10.2.1SMTP的指令与响应码269 10.2.2Email的组成270 10.2.3ESMTP的工作流程271 10.2.4ESMTP协议编程实例272 10.3POP3协议编程276 10.3.1POP3的工作流程276 10.3.2POP3协议编程概述278 10.4利用SmtpMail类发送Email283 10.4.1System.Web.Mail介绍283 10.4.2处理Email信息及附件285 10.4.3Email发送方法286 10.5利用JMail类收发Email287 10.5.1JMail组件的特点287 10.5.2JMail组件的主要参数与使用方法287 10.5.3基于JMail组件的Email发送编程290 10.5.4基于JMail组件的Email接收编程291 小结293 实验项目293 第11章FTP服务程序设计295 11.1FTP工作原理295 11.1.1FTP服务的工作原理295 11.1.2FTP的传输模式296 11.1.3FTP的登录方式297 11.2FTP协议规范297 11.2.1FTP命令297 11.2.2FTP响应码298 11.2.3FTP命令和响应码的应用方法300 11.3FTP协议的两种工作模式301 11.3.1FTP PORT模式(主动模式)301 11.3.2FTP PASV模式(被动模式)302 11.3.3两种模式的比较303 11.4基于Socket类的FTP程序设计303 11.5基于TcpClient类的FTP程序设计321 11.5.1发送与接收数据的方法321 11.5.2服务器程序323 11.5.3客户机程序324 小结328 实验项目328 第12章网络信息加密传输程序设计330 12.1数据加密模型330 12.1.1数据加密工作模型331 12.1.2对称加密模型331 12.1.3非对称加密模型332 12.1.4数字签名模型333 12.2对称加密程序设计335 12.2.1对称加密算法335 12.2.2基于流的加密解密方法336 12.2.3对称加密程序设计实例339 12.3非对称加密程序设计342 12.4网络信息加密传输程序设计350 12.4.1服务器的实现350 12.4.2客户机的实现358 小结365 实验项目365 第13章网络信息隐藏通信程序设计366 13.1LSB信息隐藏方法366 13.2基于LSB的文件隐藏传输程序设计368 13.2.1设计思路368 13.2.2信息同步技术369 13.2.3LSB的改进算法设计370 13.2.4主要代码实现370 13.3IP语音隐秘通信程序设计377 13.3.1设计思路377 13.3.2发送端关键代码378 13.3.3接收端关键代码380 13.4网页信息隐藏程序设计382 13.4.1网页入侵检测的工作原理382 13.4.2网页入侵检测系统的设计382 13.4.3网页入侵检测系统的实现384 小结391 实验项目391 参考文献392