getcwd()
函数用于获取当前工作目录的绝对路径
以下是一个使用 getcwd()
处理网络路径的示例:
#include#include #include #include #include #include #include int main() { char cwd[PATH_MAX]; if (getcwd(cwd, sizeof(cwd)) != nullptr) { std::cout << "Current working directory: " << cwd << std::endl; } else { perror("getcwd() error"); return 1; } // 处理网络路径的示例 struct addrinfo hints, *servinfo; int status; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_UNSPEC; // 使用IPv4或IPv6 hints.ai_socktype = SOCK_STREAM; // 使用TCP // 获取服务器地址信息 status = getaddrinfo("example.com", "80", &hints, &servinfo); if (status != 0) { perror("getaddrinfo() error"); return 1; } // 连接到服务器 int sockfd = socket(servinfo->ai_family, servinfo->ai_socktype, servinfo->ai_protocol); if (sockfd == -1) { perror("socket() error"); return 1; } // 连接到服务器 if (connect(sockfd, servinfo->ai_addr, servinfo->ai_addrlen) == -1) { perror("connect() error"); return 1; } // 发送HTTP请求 std::string request = "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n"; if (send(sockfd, request.c_str(), request.size(), 0) == -1) { perror("send() error"); return 1; } // 接收服务器响应 while (true) { char buffer[4096]; ssize_t received = recv(sockfd, buffer, sizeof(buffer) - 1, 0); if (received == -1) { perror("recv() error"); break; } else if (received == 0) { break; } buffer[received] = '\0'; std::cout << "Server response: " << buffer << std::endl; } // 关闭套接字和服务器地址信息 close(sockfd); freeaddrinfo(servinfo); return 0; }
在这个示例中,我们首先使用 getcwd()
获取当前工作目录的绝对路径。然后,我们使用 getaddrinfo()
获取服务器地址信息,并使用 socket()
和 connect()
建立与服务器的连接。最后,我们发送HTTP请求并接收服务器的响应。
请注意,这个示例仅用于演示目的,实际应用中可能需要根据具体需求进行调整。