Revision 1fef438d host/lib/transport/udp_simple.cpp

b/host/lib/transport/udp_simple.cpp
36 36
        //resolve the address
37 37
        asio::ip::udp::resolver resolver(_io_service);
38 38
        asio::ip::udp::resolver::query query(asio::ip::udp::v4(), addr, port);
39
        _receiver_endpoint = *resolver.resolve(query);
39
        _send_endpoint = *resolver.resolve(query);
40 40

  
41 41
        //create and open the socket
42 42
        _socket = socket_sptr(new asio::ip::udp::socket(_io_service));
......
46 46
        _socket->set_option(asio::socket_base::broadcast(bcast));
47 47

  
48 48
        //connect the socket
49
        if (connect) _socket->connect(_receiver_endpoint);
49
        if (connect) _socket->connect(_send_endpoint);
50 50

  
51 51
    }
52 52

  
53 53
    size_t send(const asio::const_buffer &buff){
54 54
        if (_connected) return _socket->send(asio::buffer(buff));
55
        return _socket->send_to(asio::buffer(buff), _receiver_endpoint);
55
        return _socket->send_to(asio::buffer(buff), _send_endpoint);
56 56
    }
57 57

  
58 58
    size_t recv(const asio::mutable_buffer &buff, double timeout){
59 59
        if (not wait_for_recv_ready(_socket->native(), timeout)) return 0;
60
        return _socket->receive(asio::buffer(buff));
60
        return _socket->receive_from(asio::buffer(buff), _recv_endpoint);
61
    }
62

  
63
    std::string get_recv_addr(void){
64
        return _recv_endpoint.address().to_string();
61 65
    }
62 66

  
63 67
private:
64 68
    bool                    _connected;
65 69
    asio::io_service        _io_service;
66 70
    socket_sptr             _socket;
67
    asio::ip::udp::endpoint _receiver_endpoint;
71
    asio::ip::udp::endpoint _send_endpoint;
72
    asio::ip::udp::endpoint _recv_endpoint;
68 73
};
69 74

  
70 75
/***********************************************************************

Also available in: Unified diff