【发布时间】:2010-12-15 16:26:02
【问题描述】:
在我的 c++ 应用程序中,我使用 getpeername 系统调用,它在 var sa 中返回 0.0.0.0。 errno没有错误,返回码为0。
代码如下:
int GetSock(int sock)
{
struct sockaddr_storage ss;
socklen_t salen = sizeof(ss);
struct sockaddr *sa;
struct addrinfo hints, *paddr, *paddrp;
sa = (struct sockaddr *)&ss;
if (getpeername(sock, sa, &salen) != 0) {
error = errno;
return -1;
}
}
注意:我在 Eclipse 中使用 GCC 编译此代码。 有什么帮助吗?
谢谢!
【问题讨论】:
-
你能给我们看一个你的代码示例吗?
-
您是否尝试过使用 getpeername()?
-
看起来它正在用于未连接的套接字或服务器套接字上。
-
告诉我们有关套接字的信息。它处于什么状态?
-
检查返回的错误信息。您可以使用 strerror 或 perror 函数来获取字符串输出。他们应该给你一个很好的提示,为什么事情会出错。
标签: c++ linux system-calls