Loading src/hldsview.cpp +22 −9 Original line number Diff line number Diff line Loading @@ -36,11 +36,12 @@ const uint8_t payload_template[A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE] = { 'S', 'o', 'u', 'r', 'c', 'e', ' ', 'E', 'n', 'g', 'i', 'n', 'e', ' ', 'Q', 'u', 'e', 'r', 'y', '\0' }; HldsView::HldsView(const char *addr,int port) : clientSocket(addr,port,1,0){ HldsView::HldsView(const char *addr,int port){ try{ sport = port; saddr = addr; serverSocket.connect(&clientSocket); clientSocket = new netplus::udp(addr,port,1,0); serverSocket = new netplus::udp(); memset(challange,0,sizeof(challange)); }catch(netplus::NetException &exp){ throw exp.what(); Loading @@ -48,23 +49,35 @@ HldsView::HldsView(const char *addr,int port) : clientSocket(addr,port,1,0){ } HldsView::~HldsView(){ delete clientSocket; delete serverSocket; } HldsView::HldsView(const HldsView &view) : HldsView(view.saddr.c_str(),view.sport){ HldsView::HldsView(const HldsView &view){ try{ sport = view.sport; saddr = view.saddr; clientSocket = new netplus::udp(saddr.c_str(),sport,1,0); serverSocket = new netplus::udp(); memset(challange,0,sizeof(challange)); }catch(netplus::NetException &exp){ throw exp.what(); } }; void HldsView::refresh(HldsData &info){ const std::lock_guard<std::mutex> lock(rlock); serverSocket->connect(clientSocket); char buffer[1400]; size_t rcv=0; try{ uint8_t payload[A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE]; memcpy(payload, payload_template, A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket.sendData(&clientSocket,(void*)&payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket->sendData(clientSocket,(void*)&payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); char recv[9]; rcv=serverSocket.recvData(&clientSocket,&recv,sizeof(recv)); rcv=serverSocket->recvData(clientSocket,&recv,sizeof(recv)); if(recv[4] == 0x41){ memcpy(challange,recv+5,4); Loading @@ -73,13 +86,13 @@ void HldsView::refresh(HldsData &info){ AGAIN: if(challange[0]!=0){ memcpy(payload + A2S_INFO_PAYLOAD_CHALLENGE_OFFSET, &challange, sizeof (challange)); serverSocket.sendData(&clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE); serverSocket->sendData(clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE); }else{ serverSocket.sendData(&clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket->sendData(clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); } rcv=serverSocket.recvData(&clientSocket,buffer,1400); rcv=serverSocket->recvData(clientSocket,buffer,1400); if(rcv >4 && buffer[4] == 0x41){ memcpy(challange,buffer+5,4); Loading src/hldsview.h +2 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ private: uint8_t challange[4]; netplus::udp clientSocket; netplus::udp serverSocket; netplus::udp *clientSocket; netplus::udp *serverSocket; std::mutex rlock; Loading Loading
src/hldsview.cpp +22 −9 Original line number Diff line number Diff line Loading @@ -36,11 +36,12 @@ const uint8_t payload_template[A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE] = { 'S', 'o', 'u', 'r', 'c', 'e', ' ', 'E', 'n', 'g', 'i', 'n', 'e', ' ', 'Q', 'u', 'e', 'r', 'y', '\0' }; HldsView::HldsView(const char *addr,int port) : clientSocket(addr,port,1,0){ HldsView::HldsView(const char *addr,int port){ try{ sport = port; saddr = addr; serverSocket.connect(&clientSocket); clientSocket = new netplus::udp(addr,port,1,0); serverSocket = new netplus::udp(); memset(challange,0,sizeof(challange)); }catch(netplus::NetException &exp){ throw exp.what(); Loading @@ -48,23 +49,35 @@ HldsView::HldsView(const char *addr,int port) : clientSocket(addr,port,1,0){ } HldsView::~HldsView(){ delete clientSocket; delete serverSocket; } HldsView::HldsView(const HldsView &view) : HldsView(view.saddr.c_str(),view.sport){ HldsView::HldsView(const HldsView &view){ try{ sport = view.sport; saddr = view.saddr; clientSocket = new netplus::udp(saddr.c_str(),sport,1,0); serverSocket = new netplus::udp(); memset(challange,0,sizeof(challange)); }catch(netplus::NetException &exp){ throw exp.what(); } }; void HldsView::refresh(HldsData &info){ const std::lock_guard<std::mutex> lock(rlock); serverSocket->connect(clientSocket); char buffer[1400]; size_t rcv=0; try{ uint8_t payload[A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE]; memcpy(payload, payload_template, A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket.sendData(&clientSocket,(void*)&payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket->sendData(clientSocket,(void*)&payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); char recv[9]; rcv=serverSocket.recvData(&clientSocket,&recv,sizeof(recv)); rcv=serverSocket->recvData(clientSocket,&recv,sizeof(recv)); if(recv[4] == 0x41){ memcpy(challange,recv+5,4); Loading @@ -73,13 +86,13 @@ void HldsView::refresh(HldsData &info){ AGAIN: if(challange[0]!=0){ memcpy(payload + A2S_INFO_PAYLOAD_CHALLENGE_OFFSET, &challange, sizeof (challange)); serverSocket.sendData(&clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE); serverSocket->sendData(clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITH_CHALLENGE); }else{ serverSocket.sendData(&clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); serverSocket->sendData(clientSocket,(void*)payload,A2S_INFO_PAYLOAD_LEN_WITHOUT_CHALLENGE); } rcv=serverSocket.recvData(&clientSocket,buffer,1400); rcv=serverSocket->recvData(clientSocket,buffer,1400); if(rcv >4 && buffer[4] == 0x41){ memcpy(challange,buffer+5,4); Loading
src/hldsview.h +2 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,8 @@ private: uint8_t challange[4]; netplus::udp clientSocket; netplus::udp serverSocket; netplus::udp *clientSocket; netplus::udp *serverSocket; std::mutex rlock; Loading