evpp tcp server服务端
2024-10-20 11:54:58
// netserver.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <evpp/tcp_server.h>
#include <evpp/buffer.h>
#include <evpp/tcp_conn.h>
#include <vector>
#include <list>
using namespace std;
#ifdef _WIN32
#include "winmain-inl.h"
#endif
std::vector<evpp::TCPConnPtr> conns;
std::vector<evpp::TCPConnPtr>::iterator iter;
void OnMessage(const evpp::TCPConnPtr& conn,
evpp::Buffer* msg) {
std::string s = msg->NextAllString();
// LOG_INFO << "Received a message [" << s << "]"; std::cout << conns.size() << std::endl;
for (iter = conns.begin(); iter != conns.end(); iter++)
{
if (*iter != conn)
{ evpp::TCPConnPtr sconn;
sconn = *iter; sconn->Send(s);
}
else
continue;
} if (s == "quit" || s == "exit") {
conn->Close();
}
} void OnConnection(const evpp::TCPConnPtr& conn) {
if (conn->IsConnected()) {
std::cout << "Accept a new connection from " << conn->remote_addr();
std::cout << conn->remote_addr() << std::endl;
conns.push_back(conn);
}
else {
std::cout << "Disconnected from " << conn->remote_addr(); // conns.pop(conn);
conns.erase(remove(conns.begin(), conns.end(), conn), conns.end()); } } int main(int argc, char* argv[]) { std::string port = ""; conns.clear(); std::string addr = std::string("0.0.0.0:") + port;
evpp::EventLoop loop;
evpp::TCPServer server(&loop, addr, "TCPEcho", );
server.SetConnectionCallback(&OnConnection);
server.SetMessageCallback(&OnMessage); server.Init();
server.Start();
loop.Run();
return ;
}
最新文章
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
- android开发之画图版
- Happy Matt Friends(dp)
- WPF 引用DLL纯图像资源包类库中的图片
- (转载)Log4Net 在多层项目中的使用小记
- UIRoot
- ubuntu更换内核版本
- .NET 体系结构(.net core、.net framework、xamarin之间的关系)
- (转)新手写爬虫v2.5(使用代理的异步爬虫)
- Linux下RabbitMq安装
- Android proguard (混淆)
- MQTT服务器的搭建(Windows平台)
- unity开发笔记
- PAT Basic 1002
- NodeJs使用nodejs-websocket + protobuf
- 【Linux】工作管理
- 在IIS6中配置html文件以ASPX方式工作
- Bluetooth_FTP_SPEC: 蓝牙FTP介绍
- C#中单问号(?)和双问号(??)的用法整理
- “百度杯”CTF比赛 九月场 code