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

服务端设计问题(没人比我发分快了)

    来源: 互联网  发布时间:2016-10-13

    本文导语:  在做一个发送文件项目(server端):怎么才能提高工作效率。。。现在是用select; login(登陆)  mo(client主动发送文件) mt(server主动发送文件:client向不在线的client发送) 当我监听到连接后,分一条线程给client,...

在做一个发送文件项目(server端):怎么才能提高工作效率。。。现在是用select;

login(登陆)  mo(client主动发送文件) mt(server主动发送文件:client向不在线的client发送)

当我监听到连接后,分一条线程给client,client发送登陆请求包,服务端接收登陆请求,并响应,client才正式登陆;

登陆后不断开,举个例子(QQ);登陆后可以做其他事情,但这些都不经过server端。只有MO发生才经过;

我的工作流程是:
listen;
while{
accept;
         select;
phread//分配线程
{
login;//发包
MT;//(检查有没有人向我发送消息,离线信息);

while()//循环接收信息,满足条件退出
{
    case:MO->MT;//MO经过服务端,再从服务端发送给client,MO,MT都要经过得到响应后才能工作,响应信息即代表发送成功与否。
    
    case:link();//链路检查
}

exit;//条件满足,释放内存,跳槽线程,退出登录
}
}


我现在是登陆之后就进入循环了,这个应该很影响性能,phread里面的while,在此处阻塞着,不能走完整个程序。
有客户进来又分一条线程,同样进入循环。



猜想:
设置成非阻塞,
1;可否在login时,从线程池分一条出来出来处理login,工作完后放回去,(回去后login会断开不);
2;登陆后,MO时(有时文件比较大),从线程池分一条出来出来处理MO,工作完后放回去。

这样,就不用在里面循环了,走完整个流程,即有什么就触发什么,但要求不断开。

想到我发蒙了...

流程要怎么走才更合理?



|
可以考虑让主线程调用select
检测到指定条件后,派发给一个线程来处理,处理完毕,线程回到线程池

用一个集合应该也可以

|
用select,有东西他才去干,就不用while(1)在那等着了吧。

用一个数组存放连接的描述符,然后select他就可以了。

|

可以了,还要考虑如何退出.
线程里想清楚了吗?

|
服务器所要支持的并发大不?如果大的话,用epoll替代select。

|
路过,看不出什么问题,呵呵,关注一下

|
谢谢 你们的提供

    
 
 

您可能感兴趣的文章:

  • c/c++服务器程序内存泄露问题分析及解决
  • udp服务器和TCP服务器的问题
  • 代码实现Radius服务模拟的问题,熟悉Radius服务的大虾请进!
  • Turbolinux访问自己的FTP服务器和WWW服务器问题
  • 有关web服务器和数据库服务器分离的问题!
  • 关于ssh连远程系统,启动服务后,客户端一旦关闭服务自动停止的问题,解决立即结贴
  • linux下web服务器与数据库服务器的分离问题(在线等!非常急!)
  • 一个最简单的问题:www服务器与web服务器是否一个概念?
  • 服务器本机能解析域名,其它机子都解析不到,能ping通dns服务器地址,是什么问题?//
  • linux下web服务器与数据库服务器的分离问题。
  • 在设备上配置NTP服务器时出现了下列问题导致服务器同步失败
  • 问一个socket问题,服务器不停send,客户端进入睡眠服务器会断开
  • 急问!Windows服务器向Linux服务器发起TCP连接的次数受限问题
  • web服务器与数据库服务器的分离问题。
  • 头疼的问题,请指教关于linux网络服务的问题!
  • 在linux操作系统上向ftp服务器(linux系统)上上传文件,我要纪录操作日志,得到上传到ftp服务器上的文件的路径问题?
  • 关于linux下QQ和代理服务器使用的问题(2个问题)
  • socket 通讯问题!客户端获取服务端数据问题,死活都是0!
  • 一个Mozilla浏览器的问题,另一个sendmail服务器的问题!
  • linux服务器配置问题
  • 跟相同IP,端口不同的TCP服务端连接问题
  • 一个腾讯面试题,如何设计服务进程,让业务进程重启后,服务进程可以自动继续重启前的服务?
  • 大家有没有关于服务器设计的书或者资料?
  • 讨论:C/S结构的网络游戏的服务器程序设计
  • 请各位推荐一下服务器端程序设计的书籍.谢谢了~~~
  • udp视频录像文件存储服务器设计问题探讨!高手请赐教!
  • 浙ICP备11055608号-3 iis7站长之家
  • linux编程设计:如何实时监控并统计应用程序通过linux服务器各端口的流量,以及显示及时速率,源IP,目的IP,类型(TCP、UDP、FTP、HTTP等)?
  • 多线程并发服务器设计
  • 小弟毕业设计为配置Linux各种服务,能否顺利完成高手给点意见
  • 求推荐Linux下利用epoll实现大规模并发服务器架构设计与实现方面的论文or书籍。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 双linux服务器如何能在一台服务器崩溃的情况下在另一台服务器上启动相应服务
  • java命名空间javax.print类docflavor的类成员方法:服务格式化打印数据定义及介绍
  • 采用sendmail搭建邮件服务器必须在邮件服务器上构建DNS服务吗?
  • lbs基于位置服务(Location Based Service)中如何计算二点距离
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • 红帽RHEL下面设置docker服务自动启动
  • 校园网,www服务器,邮件服务器,数据库服务器等各用什么平台(系统)性能最佳?
  • nginx 服务器介绍
  • 如何有效判断服务器已经连接不上(服务器关闭,服务器非法退出等原因)
  • Cisco Open Network Environment Platform拒绝服务漏洞
  • 在服务器端怎样检测客户端与服务器端的某个会话在一段时间里面没有通信,然后在服务器端终止该会话??
  • 一种拒绝服务(Dos)攻击:SYN Flood介绍
  • 恳请对服务器的开发有经验的谈谈服务器开发经验(Unix/Linux & Win32):服务器构架、内存泄漏检测,异常出错……!!!
  • 代理服务器原理,功能及作用详细介绍
  • 如果服务器不是本机(程序在一服务器,数据库在一服务器,局域网),如何连接sql ??
  • Apache HTTP服务器2.4中的新功能概览
  • 当服务进程意外停止后,怎么让一个服务进程自动重启?
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • web服务器和应用服务器的区别?
  • windows 7下打开或者关闭telnet客户端/服务端命令方法操作步骤
  • 如何去理解web服务器与应用服务器


  • 站内导航:


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

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

    浙ICP备11055608号-3