【发布时间】:2018-12-10 03:10:22
【问题描述】:
例如,我可以在 Windows 中使用fd_set.fd_array[i] 访问它们..
request_list getIncomingRequests()
{
fd_set master_set_copy = master_set;
request_list requests;
int socket_count = select(0, &master_set_copy, nullptr, nullptr, nullptr);
for (int i = 0; i < socket_count; ++i)
{
#ifdef _WIN32
auto req_fd = master_set_copy.fd_array[i];
#else
auto req_fd = master_set_copy...[i]; // ??
#endif
sockaddr_in req_addr;
getsockname(req_fd, (sockaddr*)&req_addr, &addr_len);
requests.push_back(request(req_fd, this->fd, req_addr));
}
return requests;
}
但是fd_array 在 Linux 中不存在,所以我需要一个等价物。
【问题讨论】:
-
C 和 C++ 是两种不同的语言。请删除其中一个标签。
-
你能编辑你想要达到的目标吗?这对我来说太笼统了,
-
@DYZ 我知道,但套接字 API 适用于 C 和 C++,而不仅仅是它们。
-
@ThiruShetty 我只想通过索引访问 fd_set 中的任何套接字..
-
@XStylish 你不能直接使用windows代码直接..需要DYZ建议的少量修改
标签: c++ c linux sockets networking