当前位置: 首页 > news >正文

Easyx图形库应用(和Server程序进行交互)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        用图形界面库做开发,还有一部分同学是用来做游戏的。特别是网络游戏,基本上就是很多的客户端在一个服务器上面进行交流互通。大家最有直观感受的,应该就是各种棋牌类游戏,这类游戏需要很多的人,在一个平台上面互动。如果是工业应用,大家就想象成有很多的传感器需要上传数据到服务器,而我们的图形应用也是这个服务器的一个客户端而已。所以大家在掌握了图形库的开发之后,最好也能够学一下基本的网络开发,这样对自己的发展大有裨益。

1、网络服务器

        现在的公司,大部分都是去租云服务,很少自己去机房搭建的。这么做的好处,就是按需进行布置。如果使用的人比较多,就多租一点服务器;使用的人少,就少用一点。

2、操作系统

        服务器的操作系统大部分都是linux,以centos和ubuntu为主。少部分是windows server系统,如果自己实在是不太熟悉linux系统,使用windows server也是可以的。

3、网络开源库

        网络关于tcp/ip的开源库很多,这里谈的主要是面向c/c++语言的开发库。和easyx一样,直接用posix api写网络程序也可以,就是麻烦一点。所以大家一般都是习惯用第三方网络库来进行开发,自己专注于业务即可。目前来说,有这么几个网络库用的比较多,一个是libevent,这个历史比较悠久。一个是skynet,云风开发的,大家如果不喜欢lua,也可以直接用c开发。还有一个就是今天说的muduo。

4、muduo开发库

        大部分通信库都是用回调的形式进行开发的。也就是说,主要的通信流程,都被作者在后台隐藏好了。我们要做的,就是注册好自己的回调函数,在后台ok的时候,比如connect连接上,有数据被接收到的时候,都会调用我们自己的回调函数。mudo库也是如此,

https://github.com/chenshuo/muduo/tree/master

5、muduo的echo服务器举例

        对于这些库,一开始没有必要追究细节,会用即可,特别是知道自己的函数什么时候回调的就行。比如下面这个demo,里面最重要的变量就是server_变量,最重要的函数就是onConnection和onMesaage函数,

#include <muduo/net/TcpServer.h>
#include <muduo/net/Endian.h>
#include <muduo/net/InetAddress.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/TcpConnection.h>
#include <muduo/base/Logging.h>using namespace muduo;
using namespace muduo::net;class EchoServer
{
public:EchoServer(EventLoop* loop, const InetAddress& listenAddr): server_(loop, listenAddr, "EchoServer"){server_.setConnectionCallback(std::bind(&EchoServer::onConnection, this, std::placeholders::_1));server_.setMessageCallback(std::bind(&EchoServer::onMessage, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));}void start(){server_.start();}private:void onConnection(const TcpConnectionPtr& conn){if (conn->connected()){LOG_INFO << "New connection: " << conn->peerAddress().toIpPort();}else{LOG_INFO << "Connection closed: " << conn->peerAddress().toIpPort();}}void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp time){std::string msg = buf->retrieveAllAsString();LOG_INFO << "Received message: " << msg;conn->send(msg);  // Echo back the received message}TcpServer server_;
};int main()
{EventLoop loop;InetAddress listenAddr(2023);  // Echo server listens on port 2023EchoServer server(&loop, listenAddr);server.start();loop.loop();return 0;
}

6、编译方法

        编译的话,可以自己去网上先下载muduo,生成muduo_base和muduo_net两个静态库之后,直接用下面命令链接测试即可,

g++ -std=c++11 -o echo_server echo_server.cpp -lmuduo_net -lmuduo_base -pthread -I3rdparty/ -Llib/

7、测试方法

        echo服务器可以直接用telnet工具测试。如果是同一台电脑或者板子,可以直接telnet 127.0.0.1 2023,这样我们发送什么字符,对方就回什么字符。没有telnet工具,使用mobaxterm也可以,上面集成了telnet工具。

8、用这个程序作为跳板,去发展自己的应用

        我们从最简单的程序开始学习,但是最终目的还是为了开发产品。直接改这个echo程序,慢慢为自己所用。比如这个程序,是不是简单改一下,就是file服务器。或者客户端比较多,可以是聊天服务器,或者是游戏服务器。甚至加上rtsp&h264内容,还可以是远程协同服务器、视频服务器。所以库只是基础,能做什么取决于我们自己。

        比如github上有很多的开源网络代码,下面就是一个基于rtsp的视频传输协议代码,有兴趣的同学可以好好看下,

https://github.com/PHZ76/RtspServer/tree/master

        或者是,

https://github.com/ouweibin/RtspServer

  

http://www.dtcms.com/a/473955.html

相关文章:

  • Python自学25 - Django快速上手
  • 太原云起时网站建设广东知名网站建设
  • AI学习日记——深度学习
  • 如何设置PostgreSQL表字段为自增主键
  • 排版工具:也说Markdown的使用方法
  • 分销网站建站wordpress调用推荐文章代码
  • 数据湖Hudi-读取流程可视化
  • 智能环境感知屏幕自适应系统:原理、架构与实现
  • 中卫网站制作公司公司网站seo怎么做
  • Python高效搜索实现:从数据海洋到精准信息的智能导航
  • 安安网站建设优惠的网站快排公司电话
  • Elasticsearch 备份:snapshot 镜像使用篇
  • 10月12日星期天今日早报简报微语报早读
  • 著名建筑网站网站建设市场价
  • MySQL快速构建主从(基于GTID)
  • 感知机:单层,多层(二分类,多分类)
  • 宁波网站建设服务公司电话俄乌局势最新进展
  • python进阶_Day6
  • 网站pv uv统计wordpress 破解主题下载地址
  • 全参数与PEFT深度剖析
  • 记忆翻牌游戏
  • 自己做的网站如何让别人访问织梦帝国wordpress
  • Linux -程序地址空间
  • (Spring)@PathVariable 与 @RequestParam 区别与应用
  • SpringAI从入门到精通 (2)
  • Linux 12mybash的实现
  • K8s YAML 文件详解:从语法到实战编写指南
  • 社区版Idea怎么创建Spring Boot项目?Selected Java version 17 is not supported. 问题解决
  • 益阳市 网站建设电子商务网站建设的主要风险
  • SpringBootRemotePowershellAdmin:开箱即用的 Windows远程运维开源工具