搭建一个后台服务器--服务端(阻塞)
来源:互联网 发布: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 );
完整代码在这里:
下载
- 搭建一个后台服务器--服务端(阻塞)
- 3、搭建一个后台服务器--服务端(阻塞)
- 搭建一个后台服务器--服务端(异步,大并发)
- 搭建一个后台服务器--服务端代码(异步,大并发)
- 搭建一个后台服务器--服务端(异步,大并发)
- 搭建一个后台服务器--服务端代码(异步,大并发)
- 搭建一个后台服务器--服务端(异步,大并发)
- 4、搭建一个后台服务器--服务端代码(异步,大并发)
- 搭建一个后台服务器
- 搭建一个后台服务器--引子
- 搭建一个后台服务器--客户端
- 1、搭建一个后台服务器--引子
- 2、搭建一个后台服务器--客户端
- SVN版本服务器搭建(服务端+客户端)
- AndroidStudy---搭建后台服务器
- 如何搭建一个 HTTPS 服务端
- C++ Socket 一个服务器 多个客户端 (阻塞式)
- netty游戏服务器搭建之服务端
- Hibernate延迟加载Session关闭的解决方案
- Windows环境下Android NDK环境搭建
- 《COM技术内幕》图摘
- test
- 一种排序
- 搭建一个后台服务器--服务端(阻塞)
- iis清除缓存
- ODE45和ODE15S解法的区别
- [android]activity中每个方法用处
- void QTableView::setColumnWidth ( int column, int width),隐藏列不起作用
- 简单Android联网
- 多线程编程--5种方法实现线程同步
- 如何让Oracle表列管理更加简单
- android static 惹祸