int setConnAddr( rcComm_t *conn ) { int status1, status2; status1 = setLocalAddr( conn->sock, &conn->localAddr ); status2 = setRemoteAddr( conn->sock, &conn->remoteAddr ); if ( status1 < 0 ) { return status1; } else if ( status2 < 0 ) { return status2; } else { return 0; } }
int CgcUdpClient::startClient(const tstring & sCgcServerAddr, unsigned int bindPort, int nThreadStackSize) { if (m_udpClient.get() != 0) return 0; if (!setRemoteAddr(sCgcServerAddr)) return -1; try { if (m_ipService.get() == 0) m_ipService = mycp::asio::IoService::create(); if (m_udpClient.get()==NULL) m_udpClient = mycp::asio::UdpSocket::create(); CgcUdpClient::pointer clientHandler = boost::static_pointer_cast<CgcUdpClient, CgcBaseClient>(boost::enable_shared_from_this<CgcBaseClient>::shared_from_this()); m_udpClient->start(m_ipService->ioservice(), bindPort, clientHandler, nThreadStackSize, m_nIoSendBufferSize, m_nIoReceiveBufferSize); m_udpClient->socket()->connect(m_endpointRemote); m_ipService->start(); //boost::asio::socket_base::send_buffer_size a; //boost::asio::socket_base::receive_buffer_size b; //m_udpClient->socket()->get_option(a); //m_udpClient->socket()->get_option(b); //char lpszBuffer[200]; //sprintf(lpszBuffer,"send-buf-size=%d,recv-buf-size=%d",a.value(),b.value()); //MessageBox(NULL,lpszBuffer,lpszBuffer,MB_OK); // **测试,不能删除; #ifdef WIN32 Sleep(50); #else usleep(50000); #endif m_endpointLocal = m_udpClient->socket()->local_endpoint(); m_ipLocal = CCgcAddress(m_endpointLocal.address().to_string(), m_endpointLocal.port(), CCgcAddress::ST_UDP); }catch (const std::exception&) { //std::cerr << e.what() << std::endl; return -2; }catch(...) {} return 0; }