高性能服务器
浮生灬七闲
风起之处,身似浮尘。前路何往,知者无人。
展开
-
Epoll模型的高性能服务器丢失数据问题解决
0. 问题起因使用epoll模型后,虽然提高了服务器的并发性,但是在测试时发现一个很严重的问题,当服务器负载很高时,部分数据会丢弃掉,问题最严重的时候10万条测试数据可以达到百分之5的丢失概率,这对于服务器来说已经违背的初衷,虽然并发性能提高了,但是服务器的可靠性得不到保证。1. 问题分析通过Epoll部分的代码,查阅了Epoll的相关资料和特性,做出如下推测。首先从Epoll的两种事件模...原创 2019-02-24 19:35:34 · 957 阅读 · 0 评论 -
Ubuntu 18.04 通过源码编译安装libevent库
0. 下载安装gcc和makeUbuntu 18.04默认没有安装GCC和make,很烦人。$sudo apt install gcc g++ make已经安装的大佬自行跳过。1.下载libevent库源代码点击下面的连接进入libevent官网。libevent官网找到Download–Stable releases,选择一个你喜欢的releases版本,点击下载。等待下载完...原创 2019-02-20 21:10:55 · 2471 阅读 · 4 评论 -
基于C语言的网络编程客户端和服务端基本要求
服务端:目标:建立socket,等待客户端主动连接,同时实现接收和发送消息。使用IO复用技术,使程序可以同时处理多客户端的连接,发送,接收,达到一定的并发性。熟练使用sockaddr结构体,熟悉sockaddr_in类型结构体内各变量的含义,类型和设置方法,熟悉sockaddr_in类型结构体向sockaddr类型转换的方式,sockaddr结构体的使用方法。了解sockaddr_in和so...原创 2019-03-02 11:38:47 · 418 阅读 · 0 评论 -
C/S架构聊天室项目预备问题及处理方案
文章目录一般TCP客户端、服务端编程模型多线程编程I/O多路复用实现同时监听多个客户端事件服务端程序的框架在熟悉了TCP编程模型后,可以发现其中的一些问题,如何让一个服务端程序服务众多客户端是我们要解决的第一个问题。在服务器编程中有很多解决的方法,比如多线程、多进程、复用IO等等,在这里讨论利用多线程和select复用IO的方式简单解决服务端程序服务多个客户端的问题,并实现C/S架构的聊天室简单...原创 2019-03-18 10:58:09 · 410 阅读 · 0 评论 -
C/S架构聊天室服务端客户端程序设计——select模型的I/O多路复用
文章目录问题分析本例要实现一个简单聊天室的服务端程序,能并发处理多个客户端的请求。具体要实现验证客户端登录,转发客户端发送的消息的功能。在此之前应该对网络编程有一定了解,熟悉socket通信的基本用法,熟悉客户端和服务端收发功能的实现方法。问题分析传统的socket网络编程中有很多阻塞的函数,比如accept()和read()。他们的存在必不可少,但是一旦程序阻塞,就不能执行其他任务,这对于...原创 2019-03-20 19:03:04 · 620 阅读 · 0 评论 -
C/S架构聊天室服务端客户端程序设计——建立网络连接
本例提供了创建socket并基于TCP协议进行网络通信的方法。文章目录简单理解socket如何创建socketsocket()简单理解socket解决异地客户端和服务端进行通信,我们可以使用socket。socket是一组接口,它可以让用户灵活的使用TCP/IP协议族,达到在网络上通信的目的。用户在使用socket连接都对端程序时,相当于在自己电脑上打开了一个文件描述符,对端程序变成了自己电...原创 2019-03-23 15:12:09 · 855 阅读 · 0 评论 -
C/S架构即时聊天程序程序设计——通信协议设计
此次讨论的协议是数据传输时遵照的一定格式。文章目录协议要求通信种类分析协议设计代码实现协议要求一个好的通信协议,首先要囊括所有需要发送的信息,能适应各种发送情况,不管你需要向服务端发送一条消息,还是需要验证登录,都可以通过固定的协议格式发送。在这个基础上应该尽量精简,减少打包发送和解包读取的工作量,减轻双方的负担。所以在设计协议之前我们需要讨论都有可能发送何种消息,根据具体的需求确定具体的协...原创 2019-03-23 17:31:27 · 1502 阅读 · 0 评论