1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- //
- // Created by zx on 2020/6/10.
- //
- #include "nnxx_server.h"
- Server::Server()
- {
- m_service_thread= nullptr;
- m_socket=nnxx::socket{nnxx::SP_RAW, nnxx::REP};
- }
- Server::~Server()
- {
- mb_close=true;
- if(m_service_thread!= nullptr)
- {
- if(m_service_thread->joinable())
- {
- m_service_thread->join();
- }
- delete m_service_thread;
- m_service_thread= nullptr;
- }
- m_socket.close();
- }
- bool Server::bind(std::string connect_str) {
- m_socket.bind(connect_str);
- mb_close=false;
- m_service_thread=new std::thread(service_handle,this);
- }
- bool Server::service_response(nnxx::message& message,nnxx::message_control& c1)
- {
- static int response_num=0;
- std::string msg=to_string(message);
- std::cout<<" recieve request : "<<msg<<"total response : "<<++response_num<<std::endl;
- std::string response="response : ";
- response+=msg;
- m_socket.send(response.c_str(),response.length(),0,std::move(c1));
- }
- void Server::service_handle(Server* pServer)
- {
- if(pServer== nullptr)
- return;
- nnxx::message_control msg_control;
- while(pServer->mb_close==false)
- {
- //非阻塞式读取
- nnxx::message msg = pServer->m_socket.recv(1, msg_control);
- if(msg.size()!=0)
- pServer->service_response(msg,msg_control);
- std::this_thread::yield();
- }
- }
|