개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.21 15:00

socket_getsockname 함수에 대한 질문

목록
  • Scala마법사 1일 전 2025.05.21 15:00
  • 2
    1
선생님, socket programming에서 socket_getsockname 함수를 사용하여 소켓의 주소 정보를 가져올 때, 이 함수가 반환하는 구조체는 무엇인지 궁금합니다.

다음과 같은 코드에서 socket_getsockname 함수를 사용하여 소켓의 주소 정보를 가져오면, 그 값을 어떻게 사용해야 하는지 알려주신다면 감사하겠습니다.

c

#include 

#include 

#include 

#include 

#include 



int main() {

    int server_socket;

    struct sockaddr_in server_addr;



    // 서버 소켓 생성

    server_socket = socket(AF_INET, SOCK_STREAM, 0);

    if (server_socket < 0) {

        perror("socket() error");

        return -1;

    }



    // 서버 주소 설정

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons(8080);

    inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);



    // 소켓 주소 바인딩

    if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {

        perror("bind() error");

        return -1;

    }



    // 소켓 주소 정보 가져오기

    socklen_t len = sizeof(server_addr);

    if (getsockname(server_socket, (struct sockaddr *)&server_addr, &len) < 0) {

        perror("getsockname() error");

        return -1;

    }



    printf("소켓 주소 정보: %s:%dn", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port));



    return 0;

}



이 코드에서 socket_getsockname 함수를 사용하여 소켓의 주소 정보를 가져올 때, 그 값을 어떻게 사용해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    socket_getsockname 함수는 socket programming에서 소켓의 주소 정보를 가져올 때 사용하는 함수입니다. 이 함수는 소켓의 주소 정보를 구조체인 struct sockaddr_in에 저장합니다.

    struct sockaddr_in은 소켓의 주소 정보를 저장하는 구조체로, 다음과 같은 멤버 변수를 가지고 있습니다.

    - sin_family: 주소 체계 (AF_INET, AF_INET6 등)
    - sin_port: 포트 번호
    - sin_addr: 주소 (IPv4 주소인 경우, 구조체 in_addr를 사용)

    이러한 구조체를 사용하여 소켓의 주소 정보를 가져올 수 있습니다.

    다음은 예제 코드입니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        int server_socket;
    
        struct sockaddr_in server_addr;
    
    
    
        // 서버 소켓 생성
    
        server_socket = socket(AF_INET, SOCK_STREAM, 0);
    
        if (server_socket < 0) {
    
            perror("socket() error");
    
            return -1;
    
        }
    
    
    
        // 서버 주소 설정
    
        server_addr.sin_family = AF_INET;
    
        server_addr.sin_port = htons(8080);
    
        inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);
    
    
    
        // 소켓 주소 바인딩
    
        if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
    
            perror("bind() error");
    
            return -1;
    
        }
    
    
    
        // 소켓 주소 정보 가져오기
    
        socklen_t len = sizeof(server_addr);
    
        if (getsockname(server_socket, (struct sockaddr *)&server_addr, &len) < 0) {
    
            perror("getsockname() error");
    
            return -1;
    
        }
    
    
    
        // 소켓 주소 정보 출력
    
        printf("소켓 주소 정보: %s:%dn", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port));
    
    
    
        return 0;
    
    }
    
    


    위 코드에서 socket_getsockname 함수를 사용하여 소켓의 주소 정보를 가져올 때, 그 값을 사용하는 방법은 다음과 같습니다.

    1. 소켓 주소 정보를 가져올 때, socklen_t 타입의 변수 len을 사용하여 구조체의 크기를 저장합니다.
    2. getsockname 함수를 사용하여 소켓 주소 정보를 가져옵니다.
    3. 가져온 소켓 주소 정보를 사용하여 printf 함수를 사용하여 출력합니다.

    이러한 방법으로 소켓 주소 정보를 가져올 수 있습니다.

    2025-05-21 15:01

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 21,688건 / 19 페이지

검색

게시물 검색