From 37b0f641d9ea8da33e30eecb90a3cc2b4b1925b3 Mon Sep 17 00:00:00 2001 From: zct <290198252@qq.com> Date: Tue, 6 Jul 2021 23:30:40 +0800 Subject: [PATCH] no message --- server/conan.lock | 34 ------ server/conanbuildinfo.txt | 190 --------------------------------- server/conaninfo.txt | 37 ------- server/graph_info.json | 18 ---- server/main.cpp | 4 +- server/swarm.cpp | 11 +- server/tcp_client.cpp | 20 +--- server/tcp_server_libevent.cpp | 150 +++++++++++++++----------- server/tcp_swarm_libevent.cpp | 7 +- 9 files changed, 104 insertions(+), 367 deletions(-) delete mode 100644 server/conan.lock delete mode 100644 server/conanbuildinfo.txt delete mode 100644 server/conaninfo.txt delete mode 100644 server/graph_info.json diff --git a/server/conan.lock b/server/conan.lock deleted file mode 100644 index bf9e286..0000000 --- a/server/conan.lock +++ /dev/null @@ -1,34 +0,0 @@ -{ - "graph_lock": { - "nodes": { - "0": { - "options": "OPENSSL:shared=False\nlibevent:shared=False", - "requires": [ - "1" - ], - "path": "conanfile.txt", - "context": "host" - }, - "1": { - "ref": "libevent/2.1.2", - "options": "shared=False\nOPENSSL:shared=False", - "package_id": "915fde0f08e1a7b1285eb9692add2dc53fa23d1a", - "prev": "0", - "requires": [ - "2" - ], - "context": "host" - }, - "2": { - "ref": "OPENSSL/1.1.1", - "options": "shared=False", - "package_id": "58687b9860a7859264803e7743813436a963299d", - "prev": "0", - "context": "host" - } - }, - "revisions_enabled": false - }, - "version": "0.4", - "profile_host": "[settings]\narch=x86_64\narch_build=x86_64\nbuild_type=Release\ncompiler=gcc\ncompiler.libcxx=libstdc++11\ncompiler.version=7.5\nos=Linux\nos_build=Linux\n[options]\n[build_requires]\n[env]\ncc=gcc" -} \ No newline at end of file diff --git a/server/conanbuildinfo.txt b/server/conanbuildinfo.txt deleted file mode 100644 index 37986ec..0000000 --- a/server/conanbuildinfo.txt +++ /dev/null @@ -1,190 +0,0 @@ -[includedirs] -/root/.conan/data/libevent/2.1.2/_/_/package/915fde0f08e1a7b1285eb9692add2dc53fa23d1a/include -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/include - -[libdirs] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/lib - -[bindirs] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/bin - -[resdirs] - - -[builddirs] -/root/.conan/data/libevent/2.1.2/_/_/package/915fde0f08e1a7b1285eb9692add2dc53fa23d1a/ -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/ - -[libs] -libevent_core.a -libevent.a -libevent_openssl.a -libevent_extra.a - -[system_libs] - - -[defines] - - -[cppflags] - - -[cxxflags] - - -[cflags] - - -[sharedlinkflags] - - -[exelinkflags] - - -[sysroot] - - -[frameworks] - - -[frameworkdirs] - - - -[includedirs_libevent] -/root/.conan/data/libevent/2.1.2/_/_/package/915fde0f08e1a7b1285eb9692add2dc53fa23d1a/include - -[libdirs_libevent] - - -[bindirs_libevent] - - -[resdirs_libevent] - - -[builddirs_libevent] -/root/.conan/data/libevent/2.1.2/_/_/package/915fde0f08e1a7b1285eb9692add2dc53fa23d1a/ - -[libs_libevent] -libevent_core.a -libevent.a -libevent_openssl.a -libevent_extra.a - -[system_libs_libevent] - - -[defines_libevent] - - -[cppflags_libevent] - - -[cxxflags_libevent] - - -[cflags_libevent] - - -[sharedlinkflags_libevent] - - -[exelinkflags_libevent] - - -[sysroot_libevent] - - -[frameworks_libevent] - - -[frameworkdirs_libevent] - - -[rootpath_libevent] -/root/.conan/data/libevent/2.1.2/_/_/package/915fde0f08e1a7b1285eb9692add2dc53fa23d1a - -[name_libevent] -libevent - -[version_libevent] -2.1.2 - -[generatornames_libevent] -cmake_find_package=libevent -cmake_find_package_multi=libevent - -[generatorfilenames_libevent] - - - -[includedirs_OPENSSL] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/include - -[libdirs_OPENSSL] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/lib - -[bindirs_OPENSSL] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/bin - -[resdirs_OPENSSL] - - -[builddirs_OPENSSL] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d/ - -[libs_OPENSSL] - - -[system_libs_OPENSSL] - - -[defines_OPENSSL] - - -[cppflags_OPENSSL] - - -[cxxflags_OPENSSL] - - -[cflags_OPENSSL] - - -[sharedlinkflags_OPENSSL] - - -[exelinkflags_OPENSSL] - - -[sysroot_OPENSSL] - - -[frameworks_OPENSSL] - - -[frameworkdirs_OPENSSL] - - -[rootpath_OPENSSL] -/root/.conan/data/OPENSSL/1.1.1/_/_/package/58687b9860a7859264803e7743813436a963299d - -[name_OPENSSL] -OPENSSL - -[version_OPENSSL] -1.1.1 - -[generatornames_OPENSSL] - - -[generatorfilenames_OPENSSL] - - - -[USER_OPENSSL] -[USER_libevent] -[ENV_libevent] -[ENV_OPENSSL] \ No newline at end of file diff --git a/server/conaninfo.txt b/server/conaninfo.txt deleted file mode 100644 index 15566c5..0000000 --- a/server/conaninfo.txt +++ /dev/null @@ -1,37 +0,0 @@ -[settings] - arch=x86_64 - build_type=Release - compiler=gcc - compiler.libcxx=libstdc++11 - compiler.version=7.5 - os=Linux - -[requires] - libevent/2.Y.Z - -[options] - - -[full_settings] - arch=x86_64 - arch_build=x86_64 - build_type=Release - compiler=gcc - compiler.libcxx=libstdc++11 - compiler.version=7.5 - os=Linux - os_build=Linux - -[full_requires] - OPENSSL/1.1.1:58687b9860a7859264803e7743813436a963299d - libevent/2.1.2:915fde0f08e1a7b1285eb9692add2dc53fa23d1a - -[full_options] - OPENSSL:shared=False - libevent:shared=False - -[recipe_hash] - - -[env] - cc=gcc diff --git a/server/graph_info.json b/server/graph_info.json deleted file mode 100644 index 879d558..0000000 --- a/server/graph_info.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "options": [ - [ - "OPENSSL:shared", - "False" - ], - [ - "libevent:shared", - "False" - ] - ], - "root": { - "name": null, - "version": null, - "user": null, - "channel": null - } -} \ No newline at end of file diff --git a/server/main.cpp b/server/main.cpp index 023ce07..9e22478 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -1,11 +1,13 @@ /* * @Author: your name * @Date: 2021-06-30 10:02:04 - * @LastEditTime: 2021-07-05 22:49:38 + * @LastEditTime: 2021-07-06 21:55:15 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \server\main.cpp */ +#define _WSPIAPI_H_ +#define _WINSOCKAPI_ #include #include "tcp_server_libevent.h" #ifdef WIN32 diff --git a/server/swarm.cpp b/server/swarm.cpp index 7e2ee40..11bd254 100644 --- a/server/swarm.cpp +++ b/server/swarm.cpp @@ -1,11 +1,14 @@ /* * @Author: your name * @Date: 2021-06-30 10:02:04 - * @LastEditTime: 2021-07-05 00:55:11 + * @LastEditTime: 2021-07-06 23:03:05 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \server\main.cpp */ +#define _WSPIAPI_H_ +#define _WINSOCKAPI_ + #include #include "tcp_swarm_libevent.h" #ifdef WIN32 @@ -46,9 +49,9 @@ int main(){ return 0; } #endif - std::cout<<"start server libevent\r\n"; - TcpSwarmClientLibevent swarm(8000); - swarm.ConnectToServer("127.0.0.1",8000); + std::cout<<"start swarm client libevent\r\n"; + TcpSwarmClientLibevent swarm(20); + swarm.ConnectToServer("192.168.100.110",8000); while(true){ #ifdef WIN32 Sleep(1000); diff --git a/server/tcp_client.cpp b/server/tcp_client.cpp index e6d5b8f..524f2e8 100644 --- a/server/tcp_client.cpp +++ b/server/tcp_client.cpp @@ -1,17 +1,19 @@ // // Created by 29019 on 2020/4/18. // +#define _WSPIAPI_H_ +#define _WINSOCKAPI_ #include "tcp_client.h" #include #include #include + static void conn_writecb(struct bufferevent *, void *); static void conn_readcb(struct bufferevent *, void *); static void conn_eventcb(struct bufferevent *, short, void *); void delay(int ms); int ThreadRun(TcpClientLibevent *p); - //conn_writecwritecb函数将在bufferevent中的output evbuffer缓冲区发送完成后被调用。 //此时evbuffer_get_length(output) = 0,说明output evbuffer缓冲区被清空。 //假设发现有10000条记录要发送出去,1次发送10000条将占用大量内存,所以,我们要分批发送 @@ -20,21 +22,7 @@ int ThreadRun(TcpClientLibevent *p); //数据 void conn_writecb(struct bufferevent *bev, void *user_data) { - // struct evbuffer *output = bufferevent_get_output(bev); - // if (evbuffer_get_length(output) == 0) - // { - // printf("Output evbuffer is flushed\n"); - // bufferevent_free(bev); - // } - //delay 1 second - //delay(1000); - //static int msg_num = 1; - //char reply_msg[1000] = { '\0' }; - //char *str = "I receive a message from client "; - //memcpy(reply_msg, str, strlen(str)); - //sprintf(reply_msg + strlen(str), "%d", msg_num); - //bufferevent_write(bev, reply_msg, strlen(reply_msg)); - //msg_num++; + } // 运行线程 diff --git a/server/tcp_server_libevent.cpp b/server/tcp_server_libevent.cpp index e11008a..a3bf7bb 100644 --- a/server/tcp_server_libevent.cpp +++ b/server/tcp_server_libevent.cpp @@ -1,6 +1,13 @@ +#define _WSPIAPI_H_ +#define _WINSOCKAPI_ #include "tcp_server_libevent.h" #include +/** + * @description: + * @param {*} + * @return {*} + */ ConnectionLibevent::ConnectionLibevent(TcpServerLibevent *p,struct bufferevent *ev,uint32_t fd,struct sockaddr_in *p1): m_parent_server(nullptr), m_event(nullptr), @@ -12,7 +19,11 @@ m_addr(nullptr) m_fd = fd; m_addr = p1; } - +/** + * @description: + * @param {*} + * @return {*} + */ ConnectionLibevent::ConnectionLibevent(struct bufferevent *ev,uint32_t fd,struct sockaddr_in *p1): m_parent_server(nullptr), m_event(nullptr), @@ -23,26 +34,47 @@ m_addr(nullptr) m_fd = fd; m_addr = p1; } +/** + * @description: + * @param {*} + * @return {*} + */ ConnectionLibevent* defaultConnAccept(struct bufferevent *ev,uint32_t fd,struct sockaddr_in *p1){ return new ConnectionLibevent(ev,fd,p1); } - +/** + * @description: + * @param {*} + * @return {*} + */ int ConnectionLibevent::OnRecv(char *p,uint32_t len){ std::cout<<"OnRecv "<m_fd << " "<IpAddress()<m_parent_server = p; @@ -81,41 +117,46 @@ void read_cb(struct bufferevent *bev, void *arg) cout << "client " << conn->IpAddress() << " say:" << buf << endl; conn->OnRecv(buf,sizeof(buf)); } -/************************************ -@ Author: woniu201 -@ Created: 2018/11/21 -@ Return: -************************************/ + void write_cb(struct bufferevent *bev, void *arg) { ConnectionLibevent* conn = (ConnectionLibevent*)arg; std::cout<<"connection "<IpAddress()<<" sended data success"<< std::endl; } - +/** + * @description: + * @param {*} + * @return {*} + */ void event_cb(struct bufferevent *bev, short events, void *arg) { ConnectionLibevent *conn = (ConnectionLibevent*)(arg); TcpServerLibevent *server = conn->Server(); if (events & BEV_EVENT_EOF) { - conn->OnClose(); cout << "connection closed: " << conn->IpAddress() << " " << conn->SocketFd() << endl; + conn->OnClose(); + bufferevent_free(bev); + server->RemoveConnection(conn->SocketFd()); } else if (events & BEV_EVENT_ERROR) { + conn->OnClose(); + bufferevent_free(bev); + server->RemoveConnection(conn->SocketFd()); cout << "some other error !" << endl; } - bufferevent_free(bev); - server->RemoveConnection(conn->SocketFd()); delete conn; } - - -void cb_listener(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *addr, int len, void *ptr) -{ +/** + * @description: + * @param {*} + * @return {*} + */ +void cb_listener(struct evconnlistener *listener, evutil_socket_t fd, struct sockaddr *addr, int len, void *ptr) { struct sockaddr_in* client = (sockaddr_in*)addr ; - cout << "connect new client: " << inet_ntoa(client->sin_addr) << fd << " ::"<< ntohs(client->sin_port)<< endl; + cout << "connect new client: " << inet_ntoa(client->sin_addr) << " " << fd << " ::"<< ntohs(client->sin_port)<< endl; TcpServerLibevent *server = (TcpServerLibevent*)ptr; if(server != nullptr){ struct bufferevent *bev; @@ -128,44 +169,11 @@ void cb_listener(struct evconnlistener *listener, evutil_socket_t fd, struct soc } } -int test_tcp_server() -{ -#ifdef WIN32 - WORD wVersionRequested; - WSADATA wsaData; - wVersionRequested = MAKEWORD(2, 2); - (void)WSAStartup(wVersionRequested, &wsaData); -#endif - // init server - struct sockaddr_in serv; - - memset(&serv, 0, sizeof(serv)); - serv.sin_family = AF_INET; - serv.sin_port = htons(8888); - serv.sin_addr.s_addr = htonl(INADDR_ANY); - - struct event_base * base; - base = event_base_new(); - - struct evconnlistener* listener; - listener = evconnlistener_new_bind(base, - cb_listener, - base, - LEV_OPT_CLOSE_ON_FREE|LEV_OPT_REUSEABLE, - 30000, - (struct sockaddr*)&serv, - sizeof(serv)); - - if(NULL != listener){ - event_base_dispatch(base); - evconnlistener_free(listener); - event_base_free(base); - return 0; - }else{ - return -1; - } -} - +/** + * @description: + * @param {*} + * @return {*} + */ void server_run(TcpServerLibevent *p){ if(nullptr != p){ if(p->m_status == TcpServerLibevent::STOP){ @@ -176,7 +184,6 @@ void server_run(TcpServerLibevent *p){ } } } - /** * @description: * @param {*} @@ -185,7 +192,11 @@ void server_run(TcpServerLibevent *p){ TcpServerLibevent::SERVER_STATUS TcpServerLibevent::Status(){ return m_status; } - +/** + * @description: + * @param {*} + * @return {*} + */ int TcpServerLibevent::AddConnection(uint32_t fd,ConnectionLibevent *p){ if( m_map_client.find(fd) == m_map_client.end()){ if(nullptr != p) @@ -195,7 +206,11 @@ int TcpServerLibevent::AddConnection(uint32_t fd,ConnectionLibevent *p){ } return 0; } - +/** + * @description: + * @param {*} + * @return {*} + */ int TcpServerLibevent::RemoveConnection(uint32_t fd){ if( m_map_client.find(fd) != m_map_client.end()){ m_map_client.erase(fd); @@ -204,12 +219,15 @@ if( m_map_client.find(fd) != m_map_client.end()){ return -1; } } - +/** + * @description: + * @param {*} + * @return {*} + */ int TcpServerLibevent::SetNewConnectionHandle(OnAccept p){ m_handle_accept = p; return 0; } - /** * @description: * @param {int} ports @@ -284,7 +302,11 @@ int TcpServerLibevent::StartServerAsync(){ } return -1; } - +/** + * @description: start server asynchronous + * @param {*} + * @return {*} + */ TcpServerLibevent::~TcpServerLibevent(){ if(this->m_status == RUNNING){ m_thread->detach(); diff --git a/server/tcp_swarm_libevent.cpp b/server/tcp_swarm_libevent.cpp index 341a457..17fb5da 100644 --- a/server/tcp_swarm_libevent.cpp +++ b/server/tcp_swarm_libevent.cpp @@ -1,11 +1,13 @@ /* * @Author: your name * @Date: 2021-07-04 16:06:47 - * @LastEditTime: 2021-07-05 11:11:00 + * @LastEditTime: 2021-07-06 22:40:15 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \server\tcp_swarm_libevent.cpp */ +#define _WSPIAPI_H_ +#define _WINSOCKAPI_ #include"tcp_swarm_libevent.h" #include void conn_writecb(struct bufferevent *, void *); @@ -48,6 +50,7 @@ void conn_eventcb(struct bufferevent *bev, short events, void *user_data) if (events & BEV_EVENT_EOF) { evutil_socket_t fd = bufferevent_getfd(bev); + bufferevent_free(bev); server->removeConection(fd); } else if (events & BEV_EVENT_ERROR) @@ -59,7 +62,6 @@ void conn_eventcb(struct bufferevent *bev, short events, void *user_data) evutil_socket_t fd = bufferevent_getfd(bev); server->addConection(fd,bev); } - bufferevent_free(bev); } @@ -120,7 +122,6 @@ int TcpSwarmClientLibevent::ConnectToServer(string server, int port){ return -1; } } - this->m_thread = new thread(thread_dispatch,this); return 0; }