Linux高性能网络编程

一、课程目标

本次课程深入讲解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

四、课程大纲

本次课程由以下几个部分构成:

1、POSIX Thread – 多线程

线程管理

线程创建:pthread_create()

线程终止:pthread_exit()

线程连接和分离:join and detach

线程同步机制

互斥体:mutex

读写锁:read-write lock

条件变量:condition variable

线程属性控制

mutex属性控制

2、Socket 简介

Socket地址数据结构:struct sockaddr,struct sockaddr_in

字节序以及字节序操作:ntohl(), ntohs(), htonl(), htons()

Internet地址操作:inet_aton(), inet_addr(), and inet_ntoa(), inet_pton(), inet_ntop()

3、TCP Socket

socket():创建socket

bind():绑定地址

listen():开始侦听

accept():接受来自客户端的连接

connect():连接到服务器

getsockname()和getpeername():获取本地和对端地址

I/O 操作:read(), write()

更高效的I/O 操作:readv(), writev()

TCP Server编程步骤

TCP Server v1:迭代式Echo Server

TCP Server v2:多进程并发式Echo Server,使用fork()和exec*()

TCP Server v3:多线程并发式Echo Server,使用pthread

TCP Client编程步骤

TCP Client:Echo Client

4、UDP Socket

recvfrom()和sendto():收发UDP数据报

UDP Echo Server

UDP Echo Client

组播(Multicast)和广播(Broadcast)

5、Socket Options和 IP Options

常用的Socket Options

常用的IP Options

Socket选项和IP选项对网络应用的影响

6、I/O多路复用:构建反应式(Reactive)网络应用

UNIX I/O多路复用机制概要

为什么I/O 多路复用对于网络应用很重要

I/O 多路复用与多线程(反应式模型和并发模型)

select / poll

在TCP Server和UDP Server中使用select和poll

Linux特有I/O 多路复用机制:Event poll (epoll)

在TCP Server和UDP Server中使用epoll

7、异步I/O:构建前摄式(Proactive)网络应用

相关概念:同步I/O和异步I/O、Proactor模式

异步I/O 是如何提高I/O 性能的

异步I/O系列操作

使用异步I/O的机制构建TCP Server

8、高性能网络编程讨论

考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合

网络应用的瓶颈何在

事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection)

同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O)

如何适当地使用多线程

什么时候需要多个 事件多路分离线程

9、应用层协议定义与实现

为什么要自定义应用层协议

定义应用层协议 (以XMMEP协议为例)

用C++实现自定义的协议 (以XMMEP协议为例)

注:XMMEP为X-Messenger Message Exchanging Protocol

五、时间安排

课程时间:2天,以每天6小时计,具体安排如下:

Day1

1 – POSIX Thread – 多线程

2 – Socket 简介

3 – TCP Socket

4 – UDP Socket

5 – Socket Options和 IP Options

Day2

6 – I/O多路复用:构建反应式(Reactive)网络应用

7 – 异步I/O:构建前摄式(Proactive)网络应用

8 – 高性能网络编程讨论

9 – 应用层协议定义与实现

课程回顾与总结

linux高性能网络编程,Linux高性能网络编程的介绍相关推荐

  1. Linux环境下的网络编程

    本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法,并举了具体代  码实例.要理解本文所谈的技术问题需要读者 ...

  2. linux c语言 ppt,linux操作系统下c语言编程入门.ppt

    linux操作系统下c语言编程入门.ppt Linux操作系统下C语言编程入门 CNT Linux操作系统简介基础知识进程介绍文件操作时间概念消息管理线程操作网络编程Linux下C开发工具介绍 一 L ...

  3. Linux下的shell语言编程入门

    通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者 ...

  4. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  5. 12001.linux应用程序之i2c编程

    linux应用程序之I2C编程 1 内核中关于I2C介绍 1.1 如何实例化一个I2C设备 1.2 实现一个I2C设备驱动 1.3 基本API函数 2 用户空间实现I2C编程 2.1 用户空间编程流程 ...

  6. linux环境c语言课程设计,linux环境下c语言编程课程设计

    linux环境下c语言编程课程设计 (14页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 1/14LINUX操作系统教程课程设计题目算术 ...

  7. Linux系统编程:串口编程

    Linux系统编程:串口编程 Linux下的串口概述 Linux串口编程 代码解析 编译和测试 代码中的常量介绍 Linux下的串口概述 常见的数据通信的基本方式分为并行通信和串行通信. 1.并行通信 ...

  8. Linux系统看门狗应用编程

    目录 看门狗应用编程介绍 打开设备 获取设备支持哪些功能:WDIOC_GETSUPPORT 获取/设置超时时间:WDIOC_GETTIMEOUT.WDIOC_SETTIMEOUT 开启/关闭看门狗:W ...

  9. linux5关闭apic服务,阐述Linux内核里面的APIC编程

    微软操作系统的火热,你是在应用Linux操作系统么?如果你是Linux操作系统的老用户. 这里为你讲解的问题会对Linux内核里面的APIC编程有所帮助.Linux内核的名字也是"Linux ...

  10. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

最新文章

  1. LSMW批处理使用方法(05)_步骤3下
  2. Oracle---对字段进行修改(varchar2修改clob)+ 索引失效
  3. mybatis学习(7):Windows下安装MySQL详细教程
  4. ZooKeeper 的Web管理工具Shepher介绍
  5. YOLO V3 原理
  6. wchar_t与char转换(转载)
  7. 深入实践Spring Boot1.3 使用Spring Boot
  8. 【博客美化】02.公告栏显示个性化时间
  9. log4j.xml配置示例
  10. 德州大学奥斯汀分校计算机科学排名,德州大学奥斯汀分校专业排名一览及最强专业推荐(QS世界大学排名)...
  11. GBD+XGBOOST算法原理深入解析
  12. 至高心法 - SpringCloud Alibaba (二)Nacos 服务注册与配置中心
  13. 光头探长正在连接服务器,光头探长全关卡攻略汇总 全关卡通关详解
  14. alt.js 使用教程
  15. Clearing Floats清除浮动--clearfix的不同方法的使用概述
  16. Directshow获取高帧率无驱摄像头
  17. dyld2 dyld3
  18. 英文字体免费下载:10款最新的高品质字体
  19. 重构之美-跨越Web标准,触碰语义网[开门见山:Microformat]
  20. SVM中拉格朗日乘子法、KKT条件、对偶问题详解

热门文章

  1. OpenCL编程详细解析与实例
  2. camera数字降噪(DNR)
  3. 定制语音代理(智能体)的背后是什么?
  4. 客快物流大数据项目(十五):DockeFile常用命令
  5. python join 的使用
  6. Ubuntu su 认证失败
  7. Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
  8. tp5+linux+apache php7.1.30环境下,上传图片报错:mkdir():permission denied
  9. thymeleaf+layui 展示table 报500
  10. Spring整合Struts2