我有一个关于 boost asio 库的问题。我成功地尝试在客户端和服务器之间创建一个套接字,这涉及创建解析器以便指定服务器的IP和端口(服务器只需要端口)和其他对象,但是,最重要的是,有必要使用write
and read_some
作为从套接字读取和写入的函数。
我真的很感激使用流,这在 boost asio 中是可能的,但这很奇怪......
几乎所有使用流的例子中,创建服务器都需要提供端口,好吧,我们来谈谈客户端...客户端,需要使用 iostream 构造函数来指定连接流的坐标,代码如下:
tcp::iostream() s(argv[1], "daytime");
好吧,我真的不明白第一个参数中传递的是什么,并且真的不知道白天可能代表什么......
基本上,在这里,我告诉:“嘿流,你必须连接到该服务器......”但是我如何指定该服务器的 IP 和端口?
请注意,相反,服务器端的一切几乎都是清楚的:
boost::asio::io_service io_s;
tcp::acceptor acc(io_s, tcp::endpoint(tcp::v4(), 1950));
for (;;) {
tcp::iostream stream;
acc.accept(*stream.rdbuf());
stream << "Message" << std::endl;
}
使用这个模型,我想使用
stream << mymessage_to_send << std::endl;
stream >> a_string_containing_my_message;
以便发送和接收。
我怎样才能做到这一点?
非常感谢。
您引用的 boost asio 示例代码:
tcp::iostream s(argv[1], "daytime");
使用“daytime”作为服务表(通常在 Linux 系统上的 /etc/services 中)的查找,该表将识别日间服务的端口为 13。
如果您想连接到不是众所周知的服务之一的端口,您可以使用以下命令来实现:
tcp::iostream s("localhost", "57002");
请注意,端口号以字符串形式提供,而不是像人们可能想尝试的那样以无符号短整数形式提供。
当然,“localhost”可以替换为IP地址“127.0.0.1”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)