
socket_recvfrom() 함수는 소켓 주소의 정보를 포함한 구조체를 반환합니다. 이 구조체는 sockaddr_in 구조체를 사용합니다.
소켓 주소의 IP 주소와 포트 번호를 가져올 때, 구조체의 멤버 변수인 sin_addr.s_addr와 sin_port를 사용합니다.
sin_addr.s_addr는 IP 주소의 32비트 값을 반환하며, sin_port는 포트 번호를 16비트 값으로 반환합니다.
따라서, 소켓 주소가 '192.168.0.1:8080'인 경우, socket_recvfrom() 함수를 사용하여 데이터를 수신하면, IP 주소는 0x0A0A0A01(192.168.0.1)이고 포트 번호는 0x03E8(8080)이 들어옵니다.
이 구조체의 멤버 변수를 가져올 때, sockaddr_in 구조체를 사용하여 sin_addr.s_addr와 sin_port를 가져올 수 있습니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
#include
int main() {
int sock = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(8080);
inet_pton(AF_INET, "192.168.0.1", &addr.sin_addr);
struct sockaddr_in from_addr;
socklen_t from_len = sizeof(from_addr);
recvfrom(sock, NULL, 0, 0, (struct sockaddr *)&from_addr, &from_len);
printf("IP 주소: %s:%dn", inet_ntoa(from_addr.sin_addr), ntohs(from_addr.sin_port));
return 0;
}
이 코드는 소켓 주소의 정보를 가져오고, IP 주소와 포트 번호를 출력합니다.
이러한 코드를 사용하여 소켓 주소의 정보를 가져올 수 있습니다.
감사합니다.
2025-04-16 05:25