And*_*dry 6 c++ iostream client-server boost-asio
我有一个关于boost asio库的问题.我成功地尝试在客户端和服务器之间创建套接字,这涉及创建解析器以指定服务器的ip和端口(服务器只需要端口)和其他对象,但是,最重要的是,有必要使用write以及read_some作为从套接字读取和写入的函数.我真的很感激使用一个流,这在boost asio中是可能的,但这很奇怪......在几乎所有使用流的例子中,创建服务器都需要提供端口,好吧,让我们来谈谈客户端..客户端,有必要使用iostream构造函数来指定连接流的坐标,这里是代码:
tcp::iostream() s(argv[1], "daytime");
Run Code Online (Sandbox Code Playgroud)
好吧,我真的不明白第一个参数传递了什么,真的不知道白天可能代表什么...基本上,在这里,我告诉:"嘿流,你必须连接到这个服务器.. ."但是如何指定该服务器的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;
}
Run Code Online (Sandbox Code Playgroud)
使用这个模型,我想使用
stream << mymessage_to_send << std::endl;
stream >> a_string_containing_my_message;
Run Code Online (Sandbox Code Playgroud)
为了发送和接收.我怎样才能做到这一点?非常感谢你.
Aru*_*nas 18
您引用的增强asio示例代码:
tcp::iostream s(argv[1], "daytime");
Run Code Online (Sandbox Code Playgroud)
使用"daytime"作为服务表的查找(通常在linux系统上的/ etc/services中),这将识别日间服务的端口是13.
如果要连接到不是众所周知的服务之一的端口,可以使用以下方法:
tcp::iostream s("localhost", "57002");
Run Code Online (Sandbox Code Playgroud)
请注意,端口号作为字符串提供,而不是作为无人符号的短整数提供,因为可能会尝试尝试.
当然,"localhost"可以替换为IP地址"127.0.0.1"
我使用Boost.Asio编写了一个客户端/服务器系统。源代码可在GitHub上找到:Client.cpp和Server.cpp。将Boost.Serialization与 Boost.Asio 一起使用允许我通过网络发送任意数据结构。我必须说这是相当令人印象深刻的!
| 归档时间: |
|
| 查看次数: |
6953 次 |
| 最近记录: |