개발자 Q&A

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

2025.03.19 08:46

socket_sendmsg 함수 사용에 대한 도움을 부탁드립니다.

목록
  • Unity마법사 21시간 전 2025.03.19 08:46 새글
  • 3
    1
제가 공부하는 소켓 프로그래밍에서 socket_sendmsg 함수를 사용하려고 하는데, 이 함수의 첫 번째 인자로 어떤 값을 넣어야 하는지 궁금합니다.

소켓의 파일 디스크립터를 넣어야 하나요? 아니면 소켓 구조체를 넣어야 하나요?

또한, 이 함수는 데이터를 보낼 때 어떤 방식으로 데이터를 보내는지 궁금합니다.

예를 들어, 데이터를 보낼 때 데이터가 제대로 전달되는지 확인하고 싶습니다.

socket_sendmsg 함수의 사용법에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  21시간 전



    socket_sendmsg 함수는 소켓 프로그래밍에서 사용하는 함수로, 데이터를 전송하는 함수입니다.

    이 함수의 첫 번째 인자로 소켓 구조체를 넣어야 합니다. 소켓 구조체는 소켓의 정보를 포함하고 있으며, 소켓의 파일 디스크립터를 포함하고 있습니다.

    소켓 구조체를 넣는 이유는 소켓의 정보를 함수에 전달하기 위해서입니다.

    socket_sendmsg 함수는 데이터를 전송하는 함수로, 데이터를 보낼 때 데이터가 제대로 전달되는지 확인하고 싶다면, 함수의 반환 값인 bytes_sent를 확인하면 됩니다. bytes_sent는 전송한 데이터의 크기를 나타내며, 0이 아닌 값이 반환되면 데이터가 제대로 전송된 것입니다.

    예를 들어, 다음 코드는 socket_sendmsg 함수를 사용하여 데이터를 전송하는 방법을 보여줍니다.

    #hostingforum.kr
    c
    
    #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 addr;
    
        addr.sin_family = AF_INET;
    
        addr.sin_port = htons(8080);
    
        inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr);
    
    
    
        if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
    
            perror("connect");
    
            exit(1);
    
        }
    
    
    
        char *msg = "Hello, world!";
    
        struct msghdr msg_hdr;
    
        struct iovec iov;
    
        iov.iov_base = msg;
    
        iov.iov_len = strlen(msg);
    
        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;
    
    
    
        ssize_t bytes_sent = sendmsg(sock, &msg_hdr, 0);
    
        if (bytes_sent < 0) {
    
            perror("sendmsg");
    
            exit(1);
    
        }
    
    
    
        printf("Sent %ld bytesn", bytes_sent);
    
    
    
        close(sock);
    
        return 0;
    
    }
    
    


    이 코드는 소켓을 생성하고, 서버에 연결한 후, "Hello, world!"라는 메시지를 전송합니다. sendmsg 함수의 반환 값인 bytes_sent를 확인하여 데이터가 제대로 전송되었는지 확인할 수 있습니다.

    2025-03-19 08:47

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

검색

게시물 검색