asio tcp客户端应用程序上的端口规范
我用ASIO重写C++中的Python扭曲服务器。我已经从中设置了以下示例 : Dayday.1-同步TCP日间客户端asio tcp客户端应用程序上的端口规范,tcp,boost-asio,Tcp,Boost Asio,我用ASIO重写C++中的Python扭曲服务器。我已经从中设置了以下示例 : Dayday.1-同步TCP日间客户端 Dayday.3-异步TCP日间服务器 而且它们似乎运作正常。然而,让我困惑的是,当我创建twisted服务器时,它和客户端都需要明确的IP地址和端口号规范。我在这里的经历略有不同: 在客户端应用程序上,不需要指定端口号。我可以通过仅使用127.0.0.1作为命令行参数成功连接到服务器 而且,只要第一个字节是127(例如127.1.2.3 connects),我似乎能够使用该I
Dayday.3-异步TCP日间服务器 而且它们似乎运作正常。然而,让我困惑的是,当我创建twisted服务器时,它和客户端都需要明确的IP地址和端口号规范。我在这里的经历略有不同:
现在我知道服务器有一个侦听接收器套接字,它只在收到请求后建立连接,但我想在这里了解更多详细信息。Day是*nix世界中众所周知的服务。您可以通过查看
/etc/services
文件获得已知服务的列表,您可以在其中看到以下记录:
daytime 13/udp # Daytime (RFC 867)
daytime 13/tcp # Daytime (RFC 867)
当主机名提供了service\u name
时,tcp端点使用以下版本的getaddrinfo
:
int error = ::getaddrinfo(host, service, &hints, result);
查看手册页[强调我的]:
int
getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res)
The hostname and servname arguments are either pointers to NUL-terminated strings or the null pointer. An acceptable
value for hostname is either a valid host name or a numeric host address string consisting of a dotted decimal IPv4
address or an IPv6 address. The servname is either a decimal port number or a *service name listed in services(5)*. At
least one of hostname and servname must be non-null.
因此,简而言之,只要提供正确的服务名称,它就知道要使用的正确端口号<代码>13如果是“日间”服务。谢谢。所以我可以删除Day文本并显式连接?另外,您对第2点有什么想法?AFAIK 127.x.x.x是一个环回,默认情况下,地址与所有接口绑定。