Boost Asio:关于教程的一些问题(同步日间服务器/客户端)

Boost Asio: Some questions about the tutorial (A synchronous daytime server/client)

本文关键字:同步 问题 客户端 服务器 Asio 于教程 Boost 教程      更新时间:2023-10-16

我正在尝试使用Boost Asio而不是RakNet,所以我试图遵循Boost网站上的示例,但我有一些问题没有回答。这是链接:http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/tutorial/tutdaytime1.html

只是提醒一下,我让教程在客户端和服务器中工作。

1)为什么查询需要字符串"daytime"?在服务器设置中找不到它。客户端似乎仅在我使用该字符串时才连接。(尝试使用"测试",但没有连接)

2) 为什么我不需要给客户端一个要连接的端口?它是搜索此端口本身还是存在手动设置的选项?

提前谢谢。

    tcp::resolver::query query(argv[1], "daytime");

此行解析终结点,其中 argv[1] 是主机,"daytime" 表示端口。是的,这有点令人惊讶,因为您会期望那里有80443的东西。但是,您看到的是可以使用的服务名称(如主机名)代替硬编码端口,并由操作系统解析。

如果主机名是通过/etc/hosts解析的,服务是通过/etc/services(或者我想是C:WINDOWSsystem32driversetcservices)解析的。

在我的系统上,此文件包含:

daytime     13/tcp
daytime     13/udp

所以,实际上你可以只使用"13"而不是"daytime"。请注意,这是系统日间服务的默认端口。它"有效"是因为您的系统在该端口上应答。(或者因为你的服务器已经在运行并使用该端口,我不知道你运行哪个服务器以及如何:))