コード例 #1
0
ファイル: sockComm.cpp プロジェクト: hurngchunlee/irods
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;
    }
}
コード例 #2
0
ファイル: CgcUdpClient.cpp プロジェクト: mycp/mycp
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;
}