当前位置:首页 > 日记 > 正文

linux操作系统网络服务器模型共享

linux操作系统网络服务器模型共享
评论:Linux操作系统网络服务器主要有两种模式:并发服务器和循环服务器。
所谓的并发服务器可以同时处理来自多个客户机的请求。循环服务器意味着服务器只能同时响应客户端的请求,而对于tcp和UDP套接字,这两个服务器的实现也有不同的特点。
1、tcp循环服务器:
首先,TCP服务器接受客户机的连接请求并处理连接请求。完成所有客户端的请求后,它断开,然后接受下一个客户端的请求,创建一个TCP循环服务器的算法如下:

复制代码代码如下所示:
插座(); / /创建一个TCP套接字
绑定(); / /端口号邦定的认可
听(); / /听客户端连接
同时(1)到接收客户端连接周期
{
接受(); / /接收当前的客户端连接
(1)
{当前客户机请求的处理
读();
过程();
写();
}
关闭(); / /当前客户的紧密联系,准备接收下一个客户端连接
}

TCP循环服务器一次只处理一个客户机请求。如果客户机占用服务器,其他客户端连接请求将不及时响应,因此,TCP服务器通常很少使用循环服务器模型。
2,tcp并发服务器:
并发服务器的思想是,服务器的主进程不直接处理每个客户端的请求,而服务器的主进程创建一个子进程,创建TCP并发服务器的算法如下所示:

复制代码代码如下所示:
插座(); / /创建一个TCP套接字
绑定(); / /端口号邦定的认可
听(); / /听客户端连接
当(1)到接收客户端接收到循环。
{
接受(); / /接收客户端连接
如果(叉(= = 0)) / /创造过程。
{
(1)
处理客户机连接的子进程
读();
过程();
写();
}
关闭(); / /关闭子进程的客户端连接
退出(); / /终止进程
}
关闭(); / /父进程关闭连接套接字描述符,准备接收下一个客户端连接
}

tcp并发服务器可以解决tcp环服务器中客户端的独占服务器的情况,但同时也带来了一个大问题,即响应客户端的请求,服务器要创建子进程来处理,而创建子进程是一个非常耗费资源的操作。
3、udp循环服务器:
UDP服务器每次从套接字读取客户机数据报请求,处理接收到的UDP数据报,并将结果返回给客户机:
1插座(); / /创建一个数据报套接字类型2绑定(hellip;hellip;); / /短口号键接受3,(1) / /接收客户端的连接4 { / /接收客户端的UDP数据报5(recvfrom)6;过程(hellip;hellip;发送邮件;7)(); / /准备8接收下一个客户端的数据}
消除线数
因为UDP不是面向连接的,所以没有客户端可以独占服务器。只要进程不是死循环,服务器对每个客户机的请求就可以被处理。
由于数据处理任务繁重,UDP循环服务器可能在数据报流量太大时丢失客户技术数据报告。但是由于UDP协议本身不能保证数据报的可靠到达,UDP协议被允许丢失数据报。
针对以上两点,一般UDP服务器使用循环模式4,UDP并发服务器将并发概念应用于UDP,并获得由tcp进程和并发TCP服务器模型创建的并发UDP服务器。
创建UDP并发服务器的算法如下:

复制代码代码如下所示:
插座(); / /创建一个数据报套接字类型
绑定(); / /短邦定接受的口号
当(1)到接收客户端连接时
接收和处理客户端UDP数据报
recvfrom();
如果(叉(= = 0)) / /创造过程。
{
过程();
sendto();
}
}

除非服务器花很长时间来处理客户机的请求,否则人们实际上很少使用这个UDP并发服务器模型。
4、多路复用I/O并发服务器:
创建子进程将带来大量的系统资源消耗。为了解决这个问题,使用了多路I/O模型的并发服务器,使用select函数创建多路I/O模型的并发服务器的算法如下:
初始化(套接字,绑定,监听);

复制代码代码如下所示:
(1)
{
设置侦听器读写文件描述符(fd_ *);
呼叫选择;
如果监听套接字已就绪,则将设置一个新的连接请求。
{
建立连接(接受);
添加到监视器文件描述符。
}
否则,描述是已连接的描述符。
{
操作(读或写);
}

多路复用I/O可以解决资源限制问题,这实际上是在tcp上使用udp循环模型,这也带来了一些问题,如服务器的顺序依次处理客户的请求,因此可能导致朋友的客户等待很长时间。

相关文章

win7系统无损分区调整合并工具和教

win7系统无损分区调整合并工具和教

系统,调整,工具,合并,教程,评论:价格出售双系统,然后使用安装Win7的C,C已经感觉有点小,15g,原分区估计已考虑用双系统,所以需要一点时间,win7下只比8g更多一点,但一个月或两个月下来,将扩大到约12g,到这个时候,剩余的空间很小,它可以清理一点,会影响系统…

一个为mediapass.exe过程mediapass

一个为mediapass.exe过程mediapass

查询,过程,什么用,电脑软件,mediapass,评论:详细的介绍了mediapass.exe - mediapass过程 进程文件:mediapass或mediapass.exe 进程名称:mediapass广告软件过程 过程类别:安全风险的过程 英文描述: mediapass.exe是一个过程,属于被安装到你的计…

的意义的upgrade.exe升级过程是什

的意义的upgrade.exe升级过程是什

升级,意义,过程,电脑软件,exe,综述:简要介绍了upgrade.exe升级过程 进程文件:升级或upgrade.exe 过程名称:升级可执行文件 过程类别:安全风险的过程 英文描述: upgrade.exe是软件更新的流行过程。的趋势,它也被称为以下三个方面。 中文参考: upg…

PHP从数组中随机抽取一些元素的代

PHP从数组中随机抽取一些元素的代

元素,组中,代码,电脑软件,PHP,复制代码代码如下所示: 类getValues { 公共函数的输入值(美元inputarray){ 美元-> inputarray = $ inputarray; } 公共职能是($号){ $ >; ($ i = 0;$ I数;$ + +){ 美元指数=兰特(0,计数(美元-> inputarray)- 1 - $我); { } =我…

MySQL中的插入和选择嵌套解决了组

MySQL中的插入和选择嵌套解决了组

组合,选择,嵌套,字段,解决了,如何将字段从MySQL中插入多个表到新表,通过SQL语句实现的。具体情况是,有三张桌子,A,B,和C,现在你需要插入在表B和表C几个字段的值为在本案中的表中。相应的字段,我们可以使用以下语句来实现: 插入db1_name(field1,field2…

查找查找文件并在文件修改时找到空

查找查找文件并在文件修改时找到空

文件,查找文件,查找,修改,并在,复习:根据查找文件修改时间查找文件并找到空文件夹,供大家学习参考。 查找两天前修改过的文件: 找到。F型-时间- 2 - 在3天内找到修改过的文件: 找到CTime - 3 查找命令使用超过6天,空文件是独立的查询命令: 发现…

Linux如何管理和维护内核细节

Linux如何管理和维护内核细节

维护,内核,细节,电脑软件,Linux,评论:作为用户程序和系统硬件之间的接口,内核在确保红帽企业Linux应用到广泛的物理和虚拟硬件环境中起着重要的作用。 作为用户程序和系统硬件之间的接口,内核在确保红帽企业Linux应用到广泛的物理和虚拟硬件…

是csrss32.exe病毒程序这是一个安

是csrss32.exe病毒程序这是一个安

查询,这是一个,过程,程序,电脑软件,点评:csrss32.exe是w32.agobot.ji蠕虫相关程序。该病毒通过电子邮件电子邮件传播和感染时,打开一个附件的病毒。蠕虫将自身的传播创造了受害者的机器上的一个SMTP服务。该病毒允许攻击者访问你的计算机,窃取…

如何将表和索引放在Oracle中的不同

如何将表和索引放在Oracle中的不同

索引,空间,表空间,放在,如何将,因为: 1)提高性能:尝试将表空间和索引表空间存储在不同的磁盘上,并将两种不同IO属性的数据分开,从而提高磁盘的IO整体性能。 2)易于管理:想象一下,如果索引数据文件被损坏,只要创建索引,就不会造成数据丢失问题。 下…

Word2003字体大小设置技巧

Word2003字体大小设置技巧

设置,字体大小,技巧,电脑软件,当Word2003进入文本,我们可以调整字体的大小来完成工作,在Word设置字体的大小是很简单的,有许多方法来做。以下是三个最常用的方法。 方法1。输入文本后,选择要调整的文本。然后点击常规工具栏中的字体和三角形下…

MySQL的经典限制用法和优化示例的

MySQL的经典限制用法和优化示例的

优化,详细说明,示例,经典,电脑软件,用法 复制代码代码如下所示: 选择` keyword_rank `。* ` keyword_rank `哪里(advertiserid = '59)限2偏移1; 例如,这个SQL,2个数据后面的限制,从第一次读取开始后偏移。 使用两 复制代码代码如下所示: 选择` k…

PHP控制linux服务器,经常关闭功能,重

PHP控制linux服务器,经常关闭功能,重

重新启动,控制,服务器,功能,新站点,PHP有一个可以调用系统命令的系统方法。 首先,创建一个脚本(隐喻 /根/ reboot_server。SH)并重新启动它。 复制代码代码如下所示: # /斌/狂欢! 重新启动 再给他4755次许可 chown根:根/根/ reboot_server.sh ch…