// 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 ;
}

最新文章

  1. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
  2. android开发之画图版
  3. Happy Matt Friends(dp)
  4. WPF 引用DLL纯图像资源包类库中的图片
  5. (转载)Log4Net 在多层项目中的使用小记
  6. UIRoot
  7. ubuntu更换内核版本
  8. .NET 体系结构(.net core、.net framework、xamarin之间的关系)
  9. (转)新手写爬虫v2.5(使用代理的异步爬虫)
  10. Linux下RabbitMq安装
  11. Android proguard (混淆)
  12. MQTT服务器的搭建(Windows平台)
  13. unity开发笔记
  14. PAT Basic 1002
  15. NodeJs使用nodejs-websocket + protobuf
  16. 【Linux】工作管理
  17. 在IIS6中配置html文件以ASPX方式工作
  18. Bluetooth_FTP_SPEC: 蓝牙FTP介绍
  19. C#中单问号(?)和双问号(??)的用法整理
  20. “百度杯”CTF比赛 九月场 code

热门文章

  1. 【转】什么是5G?居然有人用漫画把它讲得如此接地气!
  2. winform窗口关闭,进程没有关掉的解决办法
  3. python 中的eval与exec
  4. 【linux】查看端口占用情况
  5. C#多线程那点事——信号量(Semaphore)
  6. 基于redis+lua实现高并发场景下的秒杀限流解决方案
  7. 深入Vue响应式原理
  8. 2019-7-16 import / from...import... 模块的调用
  9. 二叉树根结点到任意结点的路径(C语言)
  10. 查询系统table条数