本文整理汇总了C++中udp::socket类的典型用法代码示例。如果您正苦于以下问题:C++ socket类的具体用法?C++ socket怎么用?C++ socket使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了socket类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: thread
udp_tracker()
: m_udp_announces(0)
, m_socket(m_ios)
, m_port(0)
{
error_code ec;
m_socket.open(udp::v4(), ec);
if (ec)
{
fprintf(stderr, "UDP Error opening listen UDP tracker socket: %s\n", ec.message().c_str());
return;
}
m_socket.bind(udp::endpoint(address_v4::any(), 0), ec);
if (ec)
{
fprintf(stderr, "UDP Error binding UDP tracker socket to port 0: %s\n", ec.message().c_str());
return;
}
m_port = m_socket.local_endpoint(ec).port();
if (ec)
{
fprintf(stderr, "UDP Error getting local endpoint of UDP tracker socket: %s\n", ec.message().c_str());
return;
}
fprintf(stderr, "%s: UDP tracker initialized on port %d\n", time_now_string(), m_port);
m_thread.reset(new thread(boost::bind(&udp_tracker::thread_fun, this)));
}
示例2:
dht_server()
: m_dht_requests(0)
, m_socket(m_ios)
, m_port(0)
{
error_code ec;
m_socket.open(udp::v4(), ec);
if (ec)
{
fprintf(stderr, "Error opening listen DHT socket: %s\n", ec.message().c_str());
return;
}
m_socket.bind(udp::endpoint(address_v4::any(), 0), ec);
if (ec)
{
fprintf(stderr, "Error binding DHT socket to port 0: %s\n", ec.message().c_str());
return;
}
m_port = m_socket.local_endpoint(ec).port();
if (ec)
{
fprintf(stderr, "Error getting local endpoint of DHT socket: %s\n", ec.message().c_str());
return;
}
fprintf(stderr, "%s: DHT initialized on port %d\n", time_now_string(), m_port);
m_thread.reset(new libtorrent::thread(boost::bind(&dht_server::thread_fun, this)));
}
示例3:
udp_tracker()
: m_udp_announces(0)
, m_socket(m_ios)
, m_port(0)
, m_abort(false)
{
error_code ec;
m_socket.open(udp::v4(), ec);
if (ec)
{
std::printf("UDP Error opening listen UDP tracker socket: %s\n", ec.message().c_str());
return;
}
m_socket.bind(udp::endpoint(address_v4::any(), 0), ec);
if (ec)
{
std::printf("UDP Error binding UDP tracker socket to port 0: %s\n", ec.message().c_str());
return;
}
m_port = m_socket.local_endpoint(ec).port();
if (ec)
{
std::printf("UDP Error getting local endpoint of UDP tracker socket: %s\n", ec.message().c_str());
return;
}
std::printf("%s: UDP tracker initialized on port %d\n", time_now_string(), m_port);
m_thread = std::make_shared<std::thread>(&udp_tracker::thread_fun, this);
}
示例4:
dht_server()
: m_dht_requests(0)
, m_socket(m_ios)
, m_port(0)
{
error_code ec;
m_socket.open(udp::v4(), ec);
if (ec)
{
std::printf("Error opening listen DHT socket: %s\n", ec.message().c_str());
return;
}
m_socket.bind(udp::endpoint(address_v4::any(), 0), ec);
if (ec)
{
std::printf("Error binding DHT socket to port 0: %s\n", ec.message().c_str());
return;
}
m_port = m_socket.local_endpoint(ec).port();
if (ec)
{
std::printf("Error getting local endpoint of DHT socket: %s\n", ec.message().c_str());
return;
}
std::printf("%s: DHT initialized on port %d\n", time_now_string(), m_port);
m_thread = std::make_shared<std::thread>(&dht_server::thread_fun, this);
}
示例5: thread_fun
void thread_fun()
{
char buffer[2000];
for (;;)
{
error_code ec;
udp::endpoint from;
int bytes_transferred = m_socket.receive_from(
asio::buffer(buffer, sizeof(buffer)), from, 0, ec);
if (ec == boost::asio::error::operation_aborted
|| ec == boost::asio::error::bad_descriptor) return;
if (ec)
{
fprintf(stderr, "Error receiving on DHT socket: %s\n", ec.message().c_str());
return;
}
try
{
entry msg = bdecode(buffer, buffer + bytes_transferred);
#if defined TORRENT_DEBUG && TORRENT_USE_IOSTREAM
std::cerr << msg << std::endl;
#endif
++m_dht_requests;
}
catch (std::exception& e)
{
fprintf(stderr, "failed to decode DHT message: %s\n", e.what());
}
}
}
示例6: check_deadline
void check_deadline(deadline_timer& deadline, udp::socket& socket) {
if (deadline.expires_at() <= deadline_timer::traits_type::now()) {
socket.cancel();
deadline.expires_at(boost::posix_time::pos_infin);
}
deadline.async_wait(boost::bind(&check_deadline, boost::ref(deadline), boost::ref(socket)));
}
示例7: start_receive
void start_receive() {
socket_.async_receive_from(
asio::buffer(recv_buffer_), remote_endpoint_,
boost::bind(&Network::handle_receive, this,
asio::placeholders::error,
asio::placeholders::bytes_transferred));
}
示例8: deadlineCallback
void deadlineCallback(boost::asio::deadline_timer& t, udp::socket& s)
{
if (t.expires_at() <= boost::asio::deadline_timer::traits_type::now())
{
s.cancel();
t.expires_at(boost::posix_time::pos_infin);
}
t.async_wait(boost::bind(&CompactRIOCommunicationNode::deadlineCallback, this, boost::ref(t), boost::ref(s)));
}
示例9: on_next
void on_next(const core::monitor::message& msg)
{
auto data_ptr = make_safe<std::vector<char>>(write_osc_event(msg));
socket_.async_send_to(boost::asio::buffer(*data_ptr),
endpoint_,
boost::bind(&impl::handle_send_to, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
示例10: receiving
void receiving()
{
mi_socket_server.async_receive_from(
boost::asio::buffer(recv_buffer), remote_endpoint,
boost::bind(&mi_udp_server::handler, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
}
示例11: sendToGroup
void
sendToGroup(udp::socket& sock, const std::vector<uint8_t>& buf, bool needToCheck = true) const
{
sock.async_send_to(boost::asio::buffer(buf), remoteMcastEp,
[needToCheck] (const auto& error, size_t) {
if (needToCheck) {
BOOST_REQUIRE_EQUAL(error, boost::system::errc::success);
}
});
}
示例12: handleRead
void handleRead(const boost::system::error_code& ec, std::size_t ln)
{
ros::Time cur_time = ros::Time::now();
error_ = ec;
if (!socket_.is_open())
return;
if (!ec)
{
std::string msg(data_);
std::istringstream ss;
// ss.unsetf(std::ios::floatfield);
// // set %7.7f
// ss.precision(7);
// ss.width(7);
if (!msg.empty())
{
boost::mutex::scoped_lock lock(mutex_);
double velocity, heading, lat_acc, lon_acc, yaw_rate;
// Emergency: 1 - ok, 0 - fault
bool emergency_state;
ss.str(msg);
ss >> heading >> velocity >> lat_acc >> lon_acc >> yaw_rate >> emergency_state;
kin_->updateState(cur_time, velocity, heading, lat_acc, lon_acc, yaw_rate, emergency_state);
nav_msgs::Odometry msg;
VehicleKinematics::stateStampedMsgToOdometryMsg(kin_->getState(), msg);
// ROS_INFO_STREAM(kin_.getState());
// msg.header.stamp = cur_time;
// msg.header.frame_id = "base_link";
// msg.child_frame_id = "odom";
// Resolve frame names
msg.header.frame_id = tf::resolve(tf_prefix_, msg.header.frame_id);
msg.child_frame_id = tf::resolve(tf_prefix_, msg.child_frame_id);
odom_tf_.header = msg.header;
odom_tf_.child_frame_id = msg.child_frame_id;
odom_tf_.transform.translation.x = msg.pose.pose.position.x;
odom_tf_.transform.translation.y = msg.pose.pose.position.y;
odom_tf_.transform.translation.z = msg.pose.pose.position.z;
odom_tf_.transform.rotation = msg.pose.pose.orientation;
odom_msg_ = msg;
}
示例13: run
void run() {
using namespace boost::posix_time;
boost::system::error_code error;
ptime now;
udp::endpoint endpoint;
while(!this->checked_ || this->alive_) {
socket->receive_from(asio::buffer(buf), endpoint, 0, error);
if(error == boost::system::errc::success) {
last = microsec_clock::local_time();
}
}
}
示例14: thread_fun
void thread_fun()
{
char buffer[2000];
for (;;)
{
error_code ec;
udp::endpoint from;
size_t bytes_transferred;
bool done = false;
m_socket.async_receive_from(
boost::asio::buffer(buffer, sizeof(buffer)), from, 0
, boost::bind(&incoming_packet, _1, _2, &bytes_transferred, &ec, &done));
while (!done)
{
m_ios.poll_one();
m_ios.reset();
}
if (ec == boost::asio::error::operation_aborted
|| ec == boost::asio::error::bad_descriptor) return;
if (ec)
{
fprintf(stderr, "Error receiving on DHT socket: %s\n", ec.message().c_str());
return;
}
try
{
entry msg = bdecode(buffer, buffer + bytes_transferred);
#if defined TORRENT_DEBUG && TORRENT_USE_IOSTREAM
std::cerr << msg << std::endl;
#endif
++m_dht_requests;
}
catch (std::exception& e)
{
fprintf(stderr, "failed to decode DHT message: %s\n", e.what());
}
}
}
示例15: thread_fun
void thread_fun()
{
char buffer[2000];
error_code ec;
udp::endpoint from;
m_socket.async_receive_from(
boost::asio::buffer(buffer, int(sizeof(buffer))), from, 0
, std::bind(&udp_tracker::on_udp_receive, this, _1, _2, &from, &buffer[0], int(sizeof(buffer))));
m_ios.run(ec);
if (ec)
{
std::printf("UDP Error running UDP tracker service: %s\n", ec.message().c_str());
return;
}
std::printf("UDP exiting UDP tracker thread\n");
}