请求/响应协议和RTTRedis是一个使用客户端/服务器模型(也被称作请求/响应协议)的TCP服务器。这说明通常来讲一个一个请求的实现有以下步骤:客户端发送请求到服务器,并从socket中以堵塞的方式读取服务器的响应数据。服务器对发动的命令进行处理并把响应数据发回客户端。比如发送连续四个命令就会像这...
分类:
其他好文 时间:
2014-09-11 16:38:32
阅读次数:
208
TCP测试用客户程序
每次运行客户程序,在命令行参数指定服务器的ip地址,端口,发起连接的子进程数,和一个待发送的字符串数据,客户程序将模拟多个客户根据指定的子进程数创建子进程来并发的连接到服务器,并发送数据,服务器收到数据后都原样的回发给客户,是一点典型的回射服务器。
#include "net.h"
char *addr = NULL;
char *request = NULL;
uns...
分类:
其他好文 时间:
2014-08-30 21:48:30
阅读次数:
425
我们来考虑一个情形,你跟千千万万个玩家是魔兽世界的超级粉丝,每周末准时组团打boss。每当周末游戏服务器就亚历山大,因为起码几十万用户同时在线。如果用我们的多线程阻塞服务器作为游戏服务器是否可行呢?先分析游戏服务器有哪些特点:
① 网络游戏并非像网页一样,打开一旦下载完就可以关闭连接结束。网游必须是有一个持久有状态的连接,每一个客户端都需要跟服务器存在一个持久的连接,以便快速及时发送消息。而随...
分类:
其他好文 时间:
2014-08-15 23:52:39
阅读次数:
518
针对单线程服务器模型的特点,我们可以对其进行改进,使之能对多个客户端同时进行响应。最简单的改进即是使用多线程(或多进程)服务器模型,在应用层级别,我们一般采用多线程模式。多线程能让多个客户端同时请求,并能几乎同时对这些请求进行响应,而不用排队一个一个处理,能同时为多个客户端提供一问一答的服务。
图2-6-1-2 多线程阻塞服务器模型
多线程服务器模型核心就是利用多线程机制,为每个...
分类:
编程语言 时间:
2014-08-13 22:34:47
阅读次数:
311
单线程服务器模型是最简单的一个服务器模型,几乎我们所有程序员在刚开始接触网络编程(不管是B/S结构还是C/S结构)都是从这个简单的模型开始。这种模型只提供同时一个客户端访问,多个客户端访问必须要等到前一个客户端访问结束,一个一个排队,即提供一问一答服务。
图2-6-1-1 单线程阻塞服务器模型
图2-6-1-1展示了单线程阻塞服务器是怎样响应客户端的访问。首先,服务器必须...
分类:
编程语言 时间:
2014-08-12 22:14:14
阅读次数:
274
一个或多个进程可向消息队列写入消息,而一个或多个进程可从消息队列中读取消息,这种进程间通讯机制通常使用在客户/服务器模型中,客户向服务器发送请求消息,服务器读取消息并执行相应请求。在许多微内核结构的操作系统中,内核和各组件之间的基本通讯方式就是消息队列。例如,在 MINIX 操作系统中,内核、I/O 任务、服务器进程和用户进程之间就是通过消息队列实现通讯的。
Linux中的消息可以被描述成在内核...
分类:
系统相关 时间:
2014-08-12 17:09:54
阅读次数:
344
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。 HTTP(端口80)协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS(端口443)。 HTTP协议永远都是客户端发起请求,服务器回送...
分类:
其他好文 时间:
2014-08-12 13:15:54
阅读次数:
185
一.HTTP协议的概念HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型(c/s)HTTP协议的特点支持客户/服务器模式(c/s模式)简...
分类:
移动开发 时间:
2014-08-01 19:11:02
阅读次数:
251
0.春阳语录,代码嵌套三层以上就是一坨垃圾。因此良好的编程风格从封装开始。1.封装select服务器模型 1.1 如何封装?将select需要的数据结构都封装成结构体,通过参数在函数之间传递,将固定的操作封装成相应的函数。 1.2 封装后的程序: 1.2.1 封装的头文件 select_t...
分类:
系统相关 时间:
2014-07-31 23:23:40
阅读次数:
442
#include #include #include #include #include #include #include #include #include #include "rio.h"#include #include #define ERR_EXIT(m) \ do { \ ...
分类:
编程语言 时间:
2014-07-31 02:35:06
阅读次数:
411