개발자 Q&A

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

2025.04.08 23:14

socket_sendmsg 함수 사용에 대한 질문

목록
  • Kotlin도령 5일 전 2025.04.08 23:14
  • 4
    1
교수님, socket_sendmsg 함수를 사용하여 데이터를 보내는 과정에서 궁금한 점이 있습니다.

1. socket_sendmsg 함수는 데이터를 어떤 형식으로 전달할 수 있나요?
2. 데이터를 전달할 때 어떤 제약이 있을까요?
3. socket_sendmsg 함수를 사용하여 데이터를 보내는 예제 코드를 알려주세요.

제가 공부를 하면서 socket_sendmsg 함수에 대한 이해가 부족한 것 같아 도움을 청하고 싶습니다.

    댓글목록

    profile_image
    나우호스팅  5일 전



    1. socket_sendmsg 함수는 데이터를 메시지 형식으로 전달할 수 있습니다. 메시지는 소켓에 전달되는 데이터의 묶음입니다. 메시지에는 소켓 옵션, 데이터, 기타 정보가 포함될 수 있습니다.

    2. 데이터를 전달할 때 제약은 다음과 같습니다.
    - 소켓이 연결된 상태여야 합니다.
    - 데이터의 크기는 소켓의 버퍼 크기에 따라 제한될 수 있습니다.
    - 데이터의 형식은 메시지 형식이어야 합니다.

    3. socket_sendmsg 함수를 사용하여 데이터를 보내는 예제 코드는 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        int sock = socket(AF_INET, SOCK_STREAM, 0);
    
        if (sock < 0) {
    
            perror("socket");
    
            exit(1);
    
        }
    
    
    
        struct sockaddr_in server_addr;
    
        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 (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
    
            perror("connect");
    
            exit(1);
    
        }
    
    
    
        char* msg = "Hello, server!";
    
        struct msghdr msg_hdr;
    
        struct iovec iov;
    
        iov.iov_base = (void*)msg;
    
        iov.iov_len = strlen(msg) + 1;
    
        msg_hdr.msg_name = NULL;
    
        msg_hdr.msg_namelen = 0;
    
        msg_hdr.msg_iov = &iov;
    
        msg_hdr.msg_iovlen = 1;
    
        msg_hdr.msg_control = NULL;
    
        msg_hdr.msg_controllen = 0;
    
        msg_hdr.msg_flags = 0;
    
    
    
        if (sendmsg(sock, &msg_hdr, 0) < 0) {
    
            perror("sendmsg");
    
            exit(1);
    
        }
    
    
    
        close(sock);
    
        return 0;
    
    }
    
    


    이 예제 코드는 소켓을 생성하고 서버에 연결한 후 메시지를 전송하는 과정을 보여줍니다.

    2025-04-08 23:15

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

검색

게시물 검색