int main(int argc, char *argv[]){
    if (!ros::isInitialized()) {
        int argc = 0;
        char **argv = NULL;
        ros::init(argc, argv, "ROS_MASTER_URI_receiver");
    }
    // create the IP broadcast Socket
    UDPSocketPtr receiver_socket = UDPSocketPtr(new UDPSocket(BROADCAST_PORT, false));
    uint32_t status = 0;
    while(status!=3 && !ros::master::check()){
        usleep(1000000);
        printf("listening for HOST IP\n");
        uint32_t host_IP;
        status = receiver_socket->receiveHostIP(key,host_IP);
        if(status==3){
            char IP[16];
            receiver_socket->convertByte2Text(host_IP,IP);
            ROS_INFO("Received HOST IP: %s",IP);
            char ros_master_uri[100];
            sprintf(ros_master_uri, "ROS_MASTER_URI=http://%s:11311",IP);
            printf("%s\n",ros_master_uri);
            putenv(ros_master_uri);
        }
    }

    system (argv[1]);
}
Пример #2
0
UDPSocketPtr SocketUtil::CreateUDPSocket( SocketAddressFamily inFamily )
{
	SOCKET s = socket( inFamily, SOCK_DGRAM, IPPROTO_UDP );
	
	if( s != INVALID_SOCKET )
	{
		return UDPSocketPtr( new UDPSocket( s ) );
	}
	else
	{
		ReportError( "SocketUtil::CreateUDPSocket" );
		return nullptr;
	}
}