
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