搭建一个后台服务器--服务端(阻塞)

来源:互联网 发布:java rmi原理 编辑:程序博客网 时间:2024/06/05 23:44

为什么 要在标题后面加个“阻塞”呢,因为系统为了增大并发,减小等待(阻塞),建立了另一种事件模式,后文将介绍,这里只介绍阻塞的模型。

阻塞服务器要干的事大致可以分为以下几步:

1.创建服务端监听连接

2.产生用户连接

3.接收用户请求

4.发送返回给用户


敲码过程如下:

设置监听地址与端口:

addr_server.sin_family = AF_INET;addr_server.sin_port = htons( port );addr_server.sin_addr.s_addr = htonl( INADDR_ANY );



创建连接并绑定:

        sock_server = socket( AF_INET, SOCK_STREAM, 0 );        flag = bind( sock_server, ( struct sockaddr* )&addr_server, sizeof( struct sockaddr ) );        if( flag < 0 )        {                printf( "your bind is not ok\n" );                close( sock_server );                return 0;        }

开始监听:

        flag = listen( sock_server, 50 );        if( flag < 0 )        {                printf( "your listen is not ok\n");                close( sock_server );                return 0;        }

接收并产生用户连接:

sock_client = accept( sock_server, ( struct sockaddr* )&addr_client, &size );if( sock_client <=0 ){printf( "your accept is no ok\n");close( sock_server );return 0;}



接收用户数据:

flag = recv( sock_client, buffer, RECV_BUF_LEN, 0 );if( flag <= 0 ){printf( "your recv is no ok\n");close( sock_client );continue;}



校验数据合法性:

if( flag != 64 ){printf( "your recv does follow the protocal\n");close( sock_client );continue;}if( buffer[31] || buffer[63] ){printf( "your recv does follow the protocal\n");close( sock_client );continue;}



发送当前时间 至客户端:

         current = time(0);         send( sock_client, ( const char* )¤t, sizeof( time_t), 0 );

关闭客户连接:

         printf( "your connection is ok\n");         printf( "now close your connection\n");         close( sock_client );


这就是一个简单的服务端处理过程,阻塞模式下受IO的影响,并发量只有2K左右,前篇的客户端程序的并发量是10000,因此服务端是跟不上的,而且服务端的并发量不受客户端的进程个数影响,的确很小。

完整代码在这里:
下载




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝店铺层级排名下降怎么办 网购不支持该地区销售怎么办 分销公司佣金不给业务员怎么办 淘宝买家账号违规了怎么办 王者荣耀打野被队友抢野怎么办 艾肯材料换错了怎么办 淘宝直播粉丝5万怎么办 淘宝直播刚开始好难怎么办 分期乐账号忘记了怎么办 外链多了影响网站排名怎么办 自粘墙纸有气泡怎么办 贴壁纸阴角不力怎么办 自贴墙纸有气泡怎么办 壁纸贴的有起泡怎么办 pos机连接主机失败怎么办 无线pos机连接主机失败怎么办 水墨晕染模板用不了怎么办 申请入驻饿了么失败怎么办 天猫流量大淘宝怎么办 拼多多商家不退款怎么办 苹果手机开流量显示e怎么办 苹果手机有服务流量打不开怎么办 苹果七plus流量打不开怎么办 苹果手机突然打不开流量怎么办 天猫商家迟迟不发货怎么办 苹果7开不开机了怎么办 苹果机黑屏了开不起来怎么办 美团收银机连不上网怎么办 6s换电池后黑屏怎么办 苹果上的软件打不开也删不掉怎么办 苹果手机打开软件打不开怎么办 苹果电脑下载的软件打不开怎么办 苹果手机下载的软件都打不开怎么办 苹7果屏幕黑屏怎么办 苹果6s手机打不开怎么办 苹果ipad密码输入打不开怎么办 苹果平板黑屏了打不开怎么办 苹果6sp电影商城打不开怎么办 苹果6应用商城打不开怎么办 游戏下载好了安装不上怎么办 苹果5s应用商店不见了怎么办