linux网络高级编程,linux高并发网络编程
Linux高性能网络编程
Linux高性能网络编程
2011-08-20 14:10
一、课程目标本课程深入讲解Linux下的socket编程,并在此基础上重点讲解如何提高网络服务器应用的性能。通过本课程的学习,学生将获得以下成果:
熟练使用socket系列函数进行网络编程;深刻理解服务器应用的性能需求;通过使用Linux提供的各种机制,可以有效地解决服务器应用程序的性能瓶颈。二。参与要求本课程的参与者必须具备以下能力:
了解TCP/IP协议,有网络编程概念。本课程采用C语言授课,因此需要学生具备良好的C语言基础;熟练使用常用Linux命令;熟练使用gcc、gdb和编写makefile;最好能熟练使用vi、emacs等文本编辑器中的一种。三。课程实践环境学生自带计算机操作系统:GNU/Linux 2.6(推荐Redhat AS 5或Ubuntu和Fedora)编译器:GCC v4.1和GDB v7.0可选IDE:Eclipse CDT IV。课程大纲本课程由以下部分组成:
1.POSIX线程-多线程管理线程创建:pthread_create()线程终止:pthread_exit()线程连接和分离:加入和分离线程同步机制互斥:互斥读写锁:读写锁条件变量:条件变量线程属性控制互斥属性控制
2.Socket介绍:Socket地址数据结构:struct sockaddr、struct sockaddr_in字节顺序和字节顺序操作:ntohl()、ntohs()、htonl()互联网地址操作:inet _ aton()、inet _ addr()和inet _ ntoa()、inet
3.TCP Socket Socket():Create Socket Bind():Bind Address listen():Start listen to Accept():接受来自客户端的连接connect():连接到服务器getsockname()和getpeername():获取本地和对等地址I/O操作:read(),writev()更高效的I/O操作:readv(),writev() TCP Server编程步骤TCP Server v1:迭代回显服务器TCP Server v2:多进程并发回显服务器,使用fork()和exec*() TCP Server v3:多线程并发回显服务器,使用pthread TCP
4.UDP套接字recvfrom()和sendto():发送和接收UDP数据报UDP Echo服务器UDP Echo客户端多播和广播
5.Socket选项和IP选项常用Socket选项常用IP选项Socket选项和IP选项对网络应用的影响6。I/O复用:构建反应式网络应用为什么UNIX的I/O复用机制I/O复用对于网络应用非常重要。I/O复用和多线程(反应式模型和并发式模型)select/poll在TCP服务器和UDP服务器中使用select和poll Linux特有的I/O复用机制:在TCP服务器和UDP服务器中使用epoll7和异步I/O的事件轮询(epoll):构建主动式网络应用相关概念:同步I/O和异步I/O,Proactor模式下的异步I/O如何提高I/O性能。异步I/O串行操作使用异步I/O机制构建TCP Server8、高性能网络编程讨论了高性能网络编程应遵循的原则,讨论了并发、同步、事件解复用等机制的应用。网络应用的瓶颈是什么?事件多路分解与每个连接一个线程。同步I/O vs异步I/O(同步I/O异步I/O)如何正确使用多线程,什么时候需要多个事件解复用线程,9。应用层协议的定义与实现,为什么要自定义应用层协议定义(以XMMEP协议为例),用C实现自定义协议(以XMMEP协议为例)。注意:XMMEP是X-messenger消息通信协议。
5.课程时间安排:2天,每天6小时。具体安排如下:
1 1 1-POSIX线程-多线程介绍2-Socket 3-TCP Socket 4-UDP Socket 5-Socket选项和IP选项Day2 6-I/O复用:构建反应式网络应用7-异步I/O:构建主动式网络应用8-讨论高性能网络编程9-应用层协议VI的定义和实现课程回顾和总结。课程资源有关可用的课程资源,请参阅:教学资源。