diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cdc425..f36e826 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,8 @@ IF (WIN32) add_custom_command ( TARGET generallib POST_BUILD COMMAND ar -x - ${CMAKE_CURRENT_SOURCE_DIR}/libd/libgenerallib.a - COMMENT "package library ar -x ${CMAKE_CURRENT_SOURCE_DIR}/libd/libgenerallib.a" + ${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-debug/libgenerallib.a + COMMENT "package library ar -x ${CMAKE_CURRENT_SOURCE_DIR}/cmake-build-debug/libgenerallib.a" ) add_custom_command ( TARGET generallib POST_BUILD diff --git a/general/src/net/TcpClient.cpp b/general/src/net/TcpClient.cpp index 264ea96..073a7ff 100644 --- a/general/src/net/TcpClient.cpp +++ b/general/src/net/TcpClient.cpp @@ -9,6 +9,7 @@ void conn_writecb(struct bufferevent *, void *); void conn_readcb(struct bufferevent *, void *); void conn_eventcb(struct bufferevent *, short, void *); + void delay(int ms); int ThreadRun(TcpClientLibevent *p); @@ -68,11 +69,13 @@ void conn_readcb(struct bufferevent *bev, void *user_data) size_t sz = evbuffer_get_length(input); if (sz > 0) { - char *msg = new char[sz]; + uint8_t *msg = new uint8_t[sz]; int ret = bufferevent_read(bev, msg, sz); printf("%s\n", msg); - server->mPack.SortPack((uint8_t *)msg, ret); - delete msg; + if(server->mObserver != nullptr){ + } + server->mObserver->OnData(msg,ret); + delete[] msg; } } @@ -139,7 +142,6 @@ TcpClientLibevent::TcpClientLibevent(std::string addrinfo, int port, TcpClientLi evthread_use_pthreads(); #endif ConnectServer(); - this->mPack.SetObserver(this); this->mThread = new thread(ThreadRun,this); this->mObserver = p; } @@ -181,6 +183,8 @@ int TcpClientLibevent::Dispatch() { return event_base_dispatch(mBase);; } -TcpClientLibevent::~TcpClientLibevent() { +int TcpClientLibevent::Close() { + event_base_free(mBase); + return 0; } diff --git a/general/src/net/TcpClient.h b/general/src/net/TcpClient.h index b409dde..b70bcc6 100644 --- a/general/src/net/TcpClient.h +++ b/general/src/net/TcpClient.h @@ -1,9 +1,13 @@ // // Created by 29019 on 2020/4/18. // -#define _WIN32_WINNT 0x0500 + #ifndef GENERAL_TCPCLIENT_H #define GENERAL_TCPCLIENT_H + +#ifndef _WIN32_WINNT +#define _WIN32_WINNT 0x0500 +#endif extern "C"{ #include "third/include/event2/bufferevent.h" #include "third/include/event2/buffer.h" @@ -18,7 +22,7 @@ extern "C"{ #include using namespace std; -class TcpClientLibevent :public PackageReceiver::PackageReceiverObserver{ +class TcpClientLibevent { public: typedef enum { UNCONNECTED, // 未连接 @@ -27,13 +31,17 @@ public: }Status; class TcpClientObserver{ public: + virtual ~TcpClientObserver(){return;} mutex mMux; virtual void OnConnected() { return; }; virtual void OnDisConnected() { return; }; - + virtual void OnData(uint8_t *dat,uint64_t len){return;}; + virtual void OnClose(){return;}; }; TcpClientLibevent(std::string addrinfo,int port, TcpClientObserver *p); - ~TcpClientLibevent(); + ~TcpClientLibevent(){ + event_base_free(mBase); + }; int ConnectServer(); bool Connected(); int Dispatch(); @@ -42,7 +50,6 @@ public: int SetObserver(TcpClientObserver*); int Close(); Status mStatus; - PackageReceiver mPack; TcpClientObserver *mObserver; private: bool mReConnect = false;