使用getaddrinfo中url:port/url的c++套接字编程

c++ socket programming with url:port/url in getaddrinfo

本文关键字:url c++ 套接字 编程 port getaddrinfo 使用      更新时间:2023-10-16

重新学习c++,对套接字相当陌生。我有一个连接正常的Python应用程序和一个工作正常的。net应用程序。

我需要调用的URL是domain.com:8080/signalr。我正在遵循一个似乎是标准的例子,例如:

if ((rv = getaddrinfo("www.domain.com", PORT, &hints, &servinfo)) != 0) {

…但无论我怎么尝试,我得到的都是未知的名称或服务

  • 呼叫domain.com/signalr:8080无效
  • 我尝试离开PORT null

如果重要的话,这是在Raspbian (Debian)上运行的。

getaddrinfo()所做的是名称解析。它不实现HTTP协议。而且,它不知道如何解析URL,你必须自己做。

正确的调用应该是这样的:

getaddrinfo("www.Domain.com", "8080", ...);

这将返回正确的struct sockaddr*调用connect()和做所有套接字的东西。

如果你想要一个为你完成所有HTTP协议的函数,你将需要一个更高级别的库。我推荐libcurl