把文件传输服务端改为多线程,多进程全局对象是不共享的,fork复制一份,这一份和别人那份没关系。
多线程全局对象是共享的,客户端参数每一个线程上来都会变,许多线程共用一个strsendbuffer就不允许单独线程初始化。
logfile可以保留为全局变量,其他全定义为局部变量,局部变量只能用参数传递
socket连接需容器保存,没用容器保存时程序退出,主程序不知道有都多少个socket,只有线程知道,但线程只知道自己的,别人不知道。
文件传输服务端确实多进程合适,但有些资源需共享用多线程。
测试多任务下文件操作
测试多任务下socket操作
vpn:https://nutsvpn.city/
短连接:客户端要或一种数据马上建立socket连接请求,处理完一个就断开,响应慢:建立一次socket连接费时间,服务端fork一个进程也要时间,之后和数据库连接也要时间
长连接:一直连接着,用心跳,费服务端资源:长连接连上后,数据库连接和进程都已准备好,一直通信完才断开。但响应快,用户看到数据越快越好控制在1秒内
项目的组织和数据结构设计
测试服务端的性能
以下在shtqappserver.cpp中
测一次访问时间算出一秒内处理多少个请求
一秒700次请求,一分钟近4万次,长连接4万socket连上,4万进程不可接受,发多个报文中间再发心跳是长连接。短连接发一次请求,连接断开一次,长短连接是客户端控制