前言
一个跨平台网络库
只所以写个,为了以后忘了,这里作为备份吧,都搭好多次了,换个机子搭一次
1:环境
分别在 ubuntu22 与 win10上编译下
libevent(2.1.12) download:https://libevent.org/
openssl(3.4.0) https://openssl-library.org/source/
2:ubuntu22
安装openssl
sudo apt-update
sudo apt-get install libevent-dev libssl-dev
其他安装安装说明进行就可以了,linux下比较简单
CMake (Unix)
$ mkdir build && cd build
$ cmake .. # Default to Unix Makefiles.
$ make
$ make verify # (optional)
make install 一般 我不执行,就放到这里就可以了,不想安装太到其他地方去
编译完后的
测试 代码 2015年写的,不过拿来重新编译下,跑下
main.cpp
// libeventtestrobot.cpp : ¶šÒå¿ØÖÆÌšÓŠÓóÌÐòµÄÈë¿Úµã¡£
//
#include "stdafx.h"
#include "robotlogic.h"
bool g_bJumpMap = false;
int main(int argc, char* argv[])
{
UINT32 u32GepMs = 300;
CHAR szIp[24] = "192.168.1.105";
INT32 n32Port = 4467;
INT32 n32Thread = 1;
INT32 n32RoleNum = 1;
switch (argc)
{
case 7:
{
g_bJumpMap = (bool)atoi(argv[6]);
}
case 6:
{
u32GepMs = atoi(argv[5]);
}
case 5:
{
n32RoleNum = atoi(argv[4]);
}
case 4:
{
n32Thread = atoi(argv[3]);
}
case 3:
{
n32Port = atoi(argv[2]);
}
case 2:
{
strncpy(szIp, argv[1], sizeof(szIp) - 1);
}
break;
}
CRobotLogic* pLogic = CRobotLogic::GetInstance();
if (pLogic->Init(szIp, n32Port, n32Thread, n32RoleNum, u32GepMs))
{
pLogic->Run();
pLogic->Fini();
}
int nQuit;
scanf("%d", &nQuit);
return 0;
}
IoThread.cpp
#include "stdafx.h"
#include "IoThread.h"
#include "logicThread.h"
#include "gsConnect.h"
#include "MsgInterface.h"
#include "MsgParser.h"
static void listen_thread_cb(struct evconnlistener *listener,
evutil_socket_t fd, struct sockaddr *addr, int socklen, void *args)
{
CNetWorkIoThread* pThread = (CNetWorkIoThread*)args;
if ( pThread )
{
pThread->onAccept(fd,addr,socklen);
}
}
void CNetWorkIoThread::onAccept(evutil_socket_t fd, struct sockaddr *addr, int socklen)
{
for(UINT8 i=0;i<10;i++)
{
// if(m_ArrayGs[i] && !m_ArrayGs[i]->isconnected())
// {
// printf("accept connect index=%d \n",i);
// m_ArrayGs[i]->setConnect(fd,addr,socklen);
// m_ArrayGs[i]->setGsID(i+1);
// m_ArrayGs[i]->setNetWorkIoThread(this);
// m_ArrayGs[i]->bindSocketBuffer(get_evbase());
// break;
// }
}
}
<