How to create a Boost.Asio socket from a native socket?(如何从本机套接字创建 Boost.Asio 套接字?)
问题描述
我只是想从现有的本机套接字创建一个 boost ip::tcp::socket
.在 assign 函数中,第一个参数必须是protocol_type",第二个参数必须是native_type",但它从不解释它们是什么或给出其使用示例.
I am merely trying to create a boost ip::tcp::socket
from an existing native socket. In the assign function, the first parameter must be a "protocol_type" and the second must be a "native_type", but it never explains what these are or gives an example of its use.
我猜第二个应该是套接字描述符,但我非常感谢澄清.
I'm guessing the second should be the socket descriptor, but I'd really appreciate clarification.
void SendData (int socket, std::string message)
{
boost::asio::io_service ioserv;
boost::asio::ip::tcp::socket s(ioserv);
s.assign(/* what goes here? */, /* ..and here? */);
s.send(boost::asio::buffer(message));
}
推荐答案
Native type"只是socket句柄,这里是socket"中存储的int.
"Native type" is just the socket handle, in this case the int stored in "socket".
协议类型"是协议.对于使用流套接字的标准 IP 上的 TCP,这将是 boost::asio::ip::tcp::v4() 的返回值.酌情替代数据报套接字、IPv6 等.
"Protocol type" is the the protocol. For a TCP over standard IP using stream socket, this would be the return value from boost::asio::ip::tcp::v4(). Substitute as appropriate for datagram sockets, IPv6, etc.
所以:
s.assign(boost::asio::ip::tcp::v4(), socket);
根据您的尝试进行适当调整.
Adjusted as appropriate for what you're trying to do.
这篇关于如何从本机套接字创建 Boost.Asio 套接字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何从本机套接字创建 Boost.Asio 套接字?
基础教程推荐
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 从 std::cin 读取密码 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01