在linux中使用C进行广播后获取IP地址

时间:2011-01-31 16:54:09

标签: c linux networking gcc

我在Linux下用C编写了一个简单的客户端服务器程序。我创建了UDP套接字。客户端使用

广播消息
sendto(clientsock, buf, 100, 0, (struct sockaddr *)&to, sizeof (to)); 

服务器使用

接收广播的消息
recvfrom(serversock, buf, 100, 0, (struct sockaddr *)&rcv,&size);

服务器已成功接收消息。在服务器端,我需要找到收到的消息的源IP地址。我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

用于调用 -

recvfrom(s, buf, BUFLEN, 0, &si_other, &slen)

使用

printf("Received packet from %s:%d\nData: %s\n\n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port), buf);