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

C++ Boost Asio:关于教程的一些问题(同步日间服务器/客户端),c++,boost,boost-asio,C++,Boost,Boost Asio,我正在尝试使用Boost Asio而不是RakNet,因此我尝试跟随Boost网站上的示例,但我还有一些问题没有回答。以下是链接: 只是提醒一下,我让教程工作了,包括客户端和服务器 1) 为什么查询需要字符串“Daylay”?在服务器设置中找不到它。客户端似乎只有在我使用该字符串时才连接。(使用“测试”尝试,但未连接) 2) 为什么我不需要给客户端一个连接端口呢?它是搜索这个端口本身,还是有手动设置的选项 提前谢谢 tcp::resolver::query query(argv[1],

我正在尝试使用Boost Asio而不是RakNet,因此我尝试跟随Boost网站上的示例,但我还有一些问题没有回答。以下是链接:

只是提醒一下,我让教程工作了,包括客户端和服务器

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

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

提前谢谢

    tcp::resolver::query query(argv[1], "daytime");
这行代码解析一个端点,其中,
argv[1]
是主机,
“day”
表示端口。是的,这有点令人惊讶,因为你可能会在那里看到像
80
443
这样的东西。但是,您看到的是服务名称,它(像主机名)可以用来代替硬编码端口,并由操作系统解析

如果主机名是通过
/etc/hosts
解析的,那么服务是通过
/etc/services
(或者
C:\WINDOWS\system32\drivers\etc\services
解析的)

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

daytime     13/tcp
daytime     13/udp

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

您忘记输入链接:)这另一个Boost Asio页面(不是来自Boost文档)可能会有所帮助:。谢谢。我将看一看那些linksI使用的是下一个教程中提供的服务器代码,是的,其中一个使用的是端口13,因此与您所说的相对应。非常感谢你的回答:)解释得很清楚。现在,为什么教程不能包括这个简单的解释,而不是让我们很多人挠头@S.N.文档的目标是教ASIO,而不是教TCP网络堆栈。例如,参见
5.1。getaddrinfo()
或只搜索“服务名称”