我的问题是:
服务器将创建一个套接字,绑定到给定端口并使用address = INADDR_ANY.
listen()&accept()新连接.然后,我们可以获取客户端的IP地址
来自accept().
现在,我想知道服务器的ip-address,因为服务器的主机有
多个网卡就可以了.
如何知道接受的入站套接字来自的网络接口的IP地址?
我尝试了getsockname,它给了我端口号,但ip是全零.
更新:这是代码:
Server.c(删除头文件)
int main(void)
{
struct sockaddr_in stSockAddr;
int res, addr_len, SocketFD, ConnectFD;
struct sockaddr_in addr;
SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(-1 == SocketFD)
{
perror("can not create socket");
//exit(EXIT_FAILURE);
return -1;
}
memset(&stSockAddr, 0, sizeof stSockAddr);
stSockAddr.sin_family = AF_INET;
stSockAddr.sin_port = htons(49335);
stSockAddr.sin_addr.s_addr = INADDR_ANY;
if(-1 == bind(SocketFD,(struct sockaddr *)&stSockAddr, sizeof stSockAddr))
{
perror("error bind failed");
close(SocketFD);
return -1;
}
printf("going to listen!\n");
if(-1 == listen(SocketFD, 10))
{
perror("error …Run Code Online (Sandbox Code Playgroud)