搭建一个后台服务器:客户端

上篇规定的协议请求部分:

request:

username/password, 约定username与password  各占32个字节(联同末位0)

可以将客户端的逻辑设计成:

1.将 username,password  封装进buffer

2.连接服务端

3.发送buffer

4.接收二 进制的系统当前时间

5.显示时间

代码如下:

服务端地址设置部分:

addr_server.sin_family = AF_INET;
addr_server.sin_port = htons( port );
addr_server.sin_addr.s_addr = inet_addr( ip );

创建连接:

sock_client = 

socket( AF_INET, SOCK_STREAM, 0 );

连接服务端代码:

flag = connect( 

sock_client, ( struct sockaddr* ) &addr_server, sizeof( addr_server ) );

设置 buffer填充username/password代码:

sprintf(buffer, "%s", "username");
sprintf(buffer + 32, "%s", "password" );  

buffer[31]=buffer[63] = 0;

接着是发送:

flag = send( sock_client, buffer, 

64, 0 );
if( flag == 64 )
{
      printf( "send ok\n");
}

接收部分代码:

flag = recv( sock_client, buffer, 64, 0 );
if( flag != sizeof( time_t ) )
{
       printf( "recv does not follow protocal\n");
       close( sock_client );
       continue;
}

将接收到的二进制数据转成时间

memcpy( curtime, buffer, sizeof( time_t ) 

);
struct tm *ptm = localtime( curtime );

显示时间:

printf( "system time:%

04d-%02d-%02d-%02d:%02d:%02d\n", ptm->tm_year + 1900, ptm->tm_mon + 1, ptm->tm_mday,
        ptm->tm_hour, ptm->tm_min, ptm->tm_sec );

关闭连接:

printf( "ok,now we close connection\n" );
close( sock_client );

实际开发中,为了追求并发效率和提升搞压效果,客户端需要有一个 循环,另外可以多进程同时操作。

实际测试中,我发现客户端的单进程并发量大概在1万左右, 因此多开几个程序,已经可以满足需求了。

详细代码下载地址:

下载地址: http://download.csdn.net/detail/xiaofei_hah0000/5205711

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Servers/zs/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索printf
, time_t
, 代码
, buffer
, 时间
, username
password
,以便于您获取更多的相关知识。

时间: 2024-11-27 10:29:41

搭建一个后台服务器:客户端的相关文章

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

为什么 要在标题后面加个"阻塞"呢,因为系统为了增大并发,减小等待(阻塞),建立了另一种 事件模式,后文将介绍,这里只介绍阻塞的模型. 阻塞服务器要干的事大致可以分为以下几步 : 1.创建服务端监听连接 2.产生用户连接 3.接收用户请求 4.发送返回给 用户 敲码过程如下: 设置监听地址与端口: addr_server.sin_family = AF_INET; addr_server.sin_port = htons( port ); addr_server.sin_addr.s_

搭建一个后台服务器:服务端(异步,大并发)

上篇的阻塞模式下服务器的并发只有几K,而真正的server 像nginx, apache, yumeiz 轻轻松松处 理几万个并发完全不在话下,因此大并发的场合下是不能用阻塞的. 1W的并发是一个分隔点,如果单进程模型下能达到 的话,说明至少在服务器这块你已经很厉害了. 服务器开发就像一门气功,能不能搞出大并发,容错性处理得怎么样,就是你有没有内功,内功有 多深. 异步模式是专门为大并发而生,linux下一般用 epoll 来管理事件,下面就开始我们的异步大并发 服务器实战吧. 跟阻塞开发一样,

搭建一个后台服务器:引子

最近去了几家公司面试,有一些大公司(比如企鹅)的考核内容真心弱智,考的都是些算法,尼玛 ,拿一个刚毕业的学生来做说不定也可以过的,看来本来就不是在招搞服务器的,举个例子,企鹅多个 部门都曾出的一道题:如何知道集合A,B中的相关性. 意思就是哪些元素在A,B之中都有,哪些 元素在A,B中不都出现. 其实解法很简单,学过算法的完全可以做到 .我们知道集合具有互异 性,就是集合中的元素只能出现一次,可以建一个map< key, value >,是标准库的还是自建一 个红黑树都无所谓, 将A,B集合中

搭建一个后台服务器:服务端代码(异步,大并发)

01.#include <stdio.h>02.#include <time.h>03.#include <fcntl.h>04.#include <stdlib.h>05.#include <errno.h>06.#include <string.h>07.08.#ifndef WIN32 09.#include <unistd.h>10.#include <sys/epoll.h>11.#include &

nginx-window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等!

问题描述 window7下搭建一个Nginx服务器 需要哪些安装环境 并做什么样的配置 急等! 需要搭建一个web app测试服务器,要求能处理高并发.最好可以配置一个域名服务测试一下. 解决方案 参考:http://www.cnblogs.com/hxxy2003/archive/2012/09/20/2695254.htmlhttp://blog.csdn.net/dhx20022889/article/details/30219471 解决方案二: 不过Windows 7是客户端操作系统,

3分钟用Docker优雅搭建一个Minecraft服务器

作者:祝剑锋,毕业于西安电子科技大学,通信工程学院硕士,2015年8月加入网易蜂巢项目组,参与蜂巢核心功能的设计与开发工作.喜欢思考,热衷于写代码,开发一些实用的小工具.   网易蜂巢团队:为企业提供专业容器云平台,深度整合IaaS.PaaS及容器技术,提供弹性计算.DevOps工具链.微服务基础设施等服务,帮助企业解决IT.架构及运维等问题,使企业更聚焦于业务,是新一代的云计算平台.     1 写在前面  作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时

3分钟用Docker搭建一个Minecraft服务器_docker

1 写在前面的话 作为一名资深游戏玩家,初次接触Minecraft(我的世界)时我是拒绝的,但玩了一段时间之后便欲罢不能.Minecraft(以下简称MC)作为一款沙盒类游戏,具有极高的自由度,想玩什么完全取决于你.你可以进行传统的荒野求生,打怪升级,可以建造各种风格的建筑,可以成为红石达人,实现各种自动化等等.这是一款最典型的"别人的游戏",有大神在游戏里造了一个32位的计算机你能信?别人的世界,哦不,是我的世界就先介绍到这里. 言归正传,前段时间用网易蜂巢的容器搭了一个Minecr

svn-项目组搭建了一个CSVN服务器,每天开机的时候,每次都需要登录的客户端启动,怎么让他默认自动启动

问题描述 项目组搭建了一个CSVN服务器,每天开机的时候,每次都需要登录的客户端启动,怎么让他默认自动启动 求助,项目组搭建了一个SVN服务器Linux环境,使用的是CSVN,每天开机后CSVN服务会自动启动,但是SVN状态是停止状态,怎么让他开始后状态就是启动状态. 解决方案 参考Linux SVN服务器CollabNet Subversion搭建Linux 安装配置Subversion edge 你安装的时候是否同时安装了csvn-httpd和csvn并配置了data/conf/csvn.c

php-用阿里云服务器如何搭建一个网站?

问题描述 用阿里云服务器如何搭建一个网站? 今天买了一个阿里云服务器和一个域名,域名绑定了,也解析了,在网上下载了一套PHP源码,用phpstudy 搭建了一个环境,不知道,怎么把代码上传到阿里云服务器中,并且直接使用?(初学者,希望大神们教下,谢谢!) 解决方案 代码上传到阿里云服务器可以使用ftp,也可以在服务器上搭建svn.git等来实现,使用的话等你把代码上传到服务器可以直接访问的目录下之后直接输入ip或者域名就好了 解决方案二: 有几种办法,您可以参考一下 第一种:在阿里云服务器里建一