Commit 059690d8 by guanghui.cui

socket发送动态分配内存修改实现方式,不使用结构体

parent 296c12ce
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
port=24446 port=24446
[ODS] [ODS]
ip=172.16.13.71 ip=103.13.247.72
pushPort=30001 pushPort=30001
recvPort=30002 recvPort=30002
socketTimeout=60 socketTimeout=120
[POS] [POS]
ip=127.0.0.1 ip=127.0.0.1
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
FILENAME = "./logs/log.log" FILENAME = "./logs/log.log"
MILLISECONDS_WIDTH = 3 MILLISECONDS_WIDTH = 3
PERFORMANCE_TRACKING = false PERFORMANCE_TRACKING = false
MAX_LOG_FILE_SIZE = 10485760 MAX_LOG_FILE_SIZE = 20485760
LOG_FLUSH_THRESHOLD = 10 LOG_FLUSH_THRESHOLD = 10
* TRACE: * TRACE:
...@@ -28,4 +28,4 @@ ...@@ -28,4 +28,4 @@
FILENAME = "./logs/info_log.log" FILENAME = "./logs/info_log.log"
* VERBOSE: * VERBOSE:
ENABLED = false ENABLED = false
\ No newline at end of file
...@@ -203,23 +203,41 @@ void TCPClient::setSocketTimeout(int timeout) ...@@ -203,23 +203,41 @@ void TCPClient::setSocketTimeout(int timeout)
//send //send
bool TCPClient::send(const std::string& message) bool TCPClient::send(const std::string& message)
{ {
bool rlt = true; bool rlt = true;
Packet *buf = nullptr; int msgLength = message.length();
unsigned int msgNetLen= htonl(msgLength);
char *tmpSend = new char[msgLength + sizeof(msgNetLen)];
memset(tmpSend, 0, msgLength + sizeof(msgNetLen));
memcpy(tmpSend, &msgNetLen, sizeof(msgNetLen));
memcpy(tmpSend + sizeof(msgNetLen), message.data(), msgLength);
//LOG(INFO) << "message length:" << message.length(); //LOG(INFO) << "message length:" << message.length();
int msgLength = message.length(); if (writen(m_sockfd, tmpSend, msgLength + sizeof(msgNetLen)) == -1)
buf = (Packet *)malloc(msgLength + sizeof(Packet));
memset(buf, 0, msgLength + sizeof(Packet));
buf->msgLen = htonl(message.length());
strcpy(buf->text, message.c_str());
if (writen(m_sockfd, buf, msgLength + sizeof(Packet)) == -1)
{ {
m_bValid = false; m_bValid = false;
rlt = false; rlt = false;
} }
free(buf); delete[] tmpSend;
return rlt; return rlt;
//----------------用结构体写法--------------
//bool rlt = true;
//Packet *buf = nullptr;
//
////LOG(INFO) << "message length:" << message.length();
//int msgLength = message.length();
//buf = (Packet *)malloc(msgLength + sizeof(Packet));
//memset(buf, 0, msgLength + sizeof(Packet));
//buf->msgLen = htonl(message.length());
//strcpy(buf->text, message.c_str());
//if (writen(m_sockfd, buf, msgLength + sizeof(Packet)) == -1)
//{
// m_bValid = false;
// rlt = false;
//}
//free(buf);
//return rlt;
} }
bool TCPClient::receive(std::string &message) bool TCPClient::receive(std::string &message)
{ {
......
...@@ -46,11 +46,11 @@ protected: ...@@ -46,11 +46,11 @@ protected:
class TCPClient : public TCPSocket class TCPClient : public TCPSocket
{ {
private: private:
struct Packet //struct Packet
{ //{
unsigned int msgLen; //数据部分的长度(网络字节序) // unsigned int msgLen; //数据部分的长度(网络字节序)
char text[1]; //报文的数据部分 // char text[1]; //报文的数据部分
}; //};
public: public:
TCPClient():m_bValid(false){} TCPClient():m_bValid(false){}
~TCPClient(){} ~TCPClient(){}
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
//#pragma comment(lib,"../bin/sqlite3.lib") //#pragma comment(lib,"../bin/sqlite3.lib")
#else #else
#include <pthread.h> #include <pthread.h>
#include <unistd.h>
#endif #endif
#define ELPP_NO_DEFAULT_LOG_FILE #define ELPP_NO_DEFAULT_LOG_FILE
...@@ -254,7 +255,7 @@ int main(int argc,char *argv[]) ...@@ -254,7 +255,7 @@ int main(int argc,char *argv[])
el::Helpers::installPreRollOutCallback(logRolloutHandler); el::Helpers::installPreRollOutCallback(logRolloutHandler);
LOG(INFO) << "---------software start---------"; LOG(INFO) << "---------software start---------";
LOG(INFO) << "---------"<< "version"<< VERSION <<"---------"; LOG(INFO) << "version:"<< VERSION ;
// 读取配置文件信息 // 读取配置文件信息
std::string strIniPath(strBinPath.data()); std::string strIniPath(strBinPath.data());
strIniPath.append("config.ini"); strIniPath.append("config.ini");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment