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

时间:2014-03-30 21:04:05

标签: c++ boost boost-asio

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

只是抬头,我让教程正常工作,包括客户端和服务器。

1)为什么查询需要字符串"白天"?它在服务器设置中无处可寻。当我使用该字符串时,客户端似乎只能连接。 (尝试"测试"它没有连接)

2)为什么我不需要为客户端提供连接端口?它是自己搜索这个端口还是可以选择手动设置它?

提前致谢。

1 个答案:

答案 0 :(得分:9)

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

这一行解析了一个端点,其中argv[1]是主机,"daytime"代表 端口 。是的,这有点令人惊讶,因为你在那里期待80443之类的东西。但是,您看到的是 service-name ,它可以使用(如主机名)而不是硬编码端口,并由操作系统解析。

如果通过/etc/hosts解析了主机名,则会通过/etc/services(或我认为C:\WINDOWS\system32\drivers\etc\services)解析服务。

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

daytime     13/tcp
daytime     13/udp

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

相关问题