当前位置:  技术问答>linux和unix

服务器并发时,代码是否也复制?

    来源: 互联网  发布时间:2016-12-07

    本文导语:  比如用TCP连接的服务器和客户端,一个服务器可以同时和 多个客户端进行通信,请问:此时的服务器端代码是否要复制 多份分别与客户端通信? 比如: sks=socket(AF_INET,SOCK_STREAM,0);  bind(sks,(struct sockaddr*)&adds,sizeof(struc...

比如用TCP连接的服务器和客户端,一个服务器可以同时和
多个客户端进行通信,请问:此时的服务器端代码是否要复制
多份分别与客户端通信?
比如:
sks=socket(AF_INET,SOCK_STREAM,0); 
bind(sks,(struct sockaddr*)&adds,sizeof(struct sockaddr)); 
listen(sks,BACKLOG);
while(1)
{
   connsks=accept(sks,(struct sockaddr*)&addc,&addclen)
   if (fork()==0)
   {
    char bufsend[100],bufrecv[100];
    int lenrecv;
    通信
    }
...
}

因为服务器与每个客户端通信时,服务器代码中都要有分别不同的套接字等变量与客户端
通信,请问服务器并发时,服务器端的代码是怎么做的?

|
如果业务量不大,一个服务进程也可以满足要求,就是串行处理呗

如果业务量大,那就需要使用多进程/多线程

|
lz贴的代码就是多进程的例子
每收到客户端的一个连接请求,fork()一个子进程,专职处理这个请求

|
fork  这个每来一个就新建一个进层。应该是会复制多分的,linux采用的是写时复制,也就是说内存真正被修改了才复制的。代码段估计不用改吧。char bufsend[100],bufrecv[100]; 这种应该是会放到栈上,没有进程都有自己独立的吧。

你这个代码应该可以运行,数据是独立的每个连接一份,没有问题。
不过好像说每个连接新建一个进程不是好的做法,创建一个进程开销还是比较大的。你就使用一个进程,在一个进程里面循环处理,效率应该也比他高

|


差不多这样,我也不清除细节。 不过理解成代码也是独立也没有问题。 属于不同的进程,确实看上去每个进程都是独立的,用的时候也不会影响别的进程。只是内部实现是这样,你没有改过的地方,暂时还是共享的。

|

我的理解认为justkk说的是对的,你的代码已经是多进程的。
就像shell命令的实现一样,每收到一个shell命令就fork一个子进程去处理,处理完后,该进程就结束,这样挺好的,容易理解,也不容易出错。

    
 
 

您可能感兴趣的文章:

  • 基于LINUX 线程的并发通讯服务器
  • linux并发服务器中epoll+多线程分别怎么理解?
  • 如何做并发服务器
  • 请问: 当服务器采用epoll 时,客户端连不上,但若服务器端不用epoll时,也连上并发消息,这是为什么啊
  • 谁告诉我一个简单的并发TCP服务器中,如何进行大包处理?在线等ing
  • 多线程并发服务器设计
  • 服务器并发接收文件的处理方法
  • 趋势的一道面试题:网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
  • fork 通讯服务器 并发没有实现的问题
  • Linux服务器增加并发数
  • 问高手:大型系统的并发处理服务器端是如何实现的?
  • 支持百万并发连接的comet服务器 icomet
  • 求推荐Linux下利用epoll实现大规模并发服务器架构设计与实现方面的论文or书籍。
  • python高并发异步服务器核心库forkcore使用方法
  • 并发服务器设计中为啥关闭原来的socket描述符?
  • linux下的socket并发服务器的编写问题,请高手指教
  • 并发服务器(tcp和udp)
  • 菜鸟求助多线程并发服务器
  • fork 通讯服务器 并发实现的问题 ?求教!!!!!
  • 测试服务器并发性能的客户端程序阻塞在 recv 函数处,大家帮忙看看什么原因?
  • PG复制服务器 xDB
  • 如何将本地机(Win2000)的文件复制到 Unix服务器上?
  • SQL Server 复制需要有实际的服务器名称才能连接到服务器
  • 能否把linux服务器中的文件复制到windows客户机???
  • 现在有50台服务器,他们的IP是192.168.1.1~192.168.1.100,如何将服务器192.168.1.1的/etc/rc.local快速复制到另外49台服务器上?
  • Shell脚本实现复制文件到多台服务器的代码分享
  • SQL高级应用之同服务器上复制表到另一数据库中并实现去重复
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个最简单的问题:www服务器与web服务器是否一个概念?
  • 请问JDBC服务器与WEB服务器是否一个概念?
  • IBM xseries服务器是否能安装ubuntu?
  • 请教大家,是否有关于Applet于服务器通信的介绍。
  • linux中邮件发送后是否会保存在服务器中
  • java判断远程服务器上的文件是否存在的方法
  • shell 程序监控网站网页是否被修改,如果被修改停止服务器的运行?
  • linux下如何利用socket测试服务器是否可达?
  • 如何测试linux服务器某端口是否开通,在线等。。。。
  • 虚拟机下安装了linux,要做代理服务器,是否无法实现啊
  • 请问:查看端口监听情况的命令是什么啊?( 比如我想看服务器是否在监听某一端口)
  • 求教:在freebsd下设置服务器是否与在linux下设置方法一样?
  • 在客户端是否可以通过SSH关闭正在服务器上后台运行的应用程序!
  • 请问 是否有终端可以在Windows下控制Linux服务器下的postgreSQL?
  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • linux下是否有远程登陆UNIX服务器的客户端?
  • Applet是否可以调用服务器端的bean,或者是Frame
  • 请问gprof命令对于多进程服务器的性能测试是否支持?
  • 大家来讨论,Linux是否是以后小型服务器趋势
  • 请问用applet直接连接服务器上的数据库的办法是否安全
  • 测试服务器并发性能的客户端程序阻塞在 recv 函数处,大家帮忙看看什么原因? iis7站长之家
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • nginx 服务器介绍
  • 校园网,www服务器,邮件服务器,数据库服务器等各用什么平台(系统)性能最佳?
  • 代理服务器原理,功能及作用详细介绍
  • 双linux服务器如何能在一台服务器崩溃的情况下在另一台服务器上启动相应服务
  • Apache HTTP服务器2.4中的新功能概览
  • 如何有效判断服务器已经连接不上(服务器关闭,服务器非法退出等原因)
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 在服务器端怎样检测客户端与服务器端的某个会话在一段时间里面没有通信,然后在服务器端终止该会话??
  • nginx服务器基本特性及使用技巧


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3