
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