sendmsg 관련 iovector 관련질문 입니다. 고수님들의 능력을 보
안녕하세요. 매번 KDLP 의 힘들 빌리고 있습니다. 언제쯤 난 도움을 줄 수 있을지. ^^;;;
아래의 structure 에서 빨간색으로 표시된 부분을 각각 sendmsg 의 iovec 를 이용하여 보내고 싶습니다. 예를 등면 iovector[0] 에는 header 를 iovector[1] 에는 buffer 를 이런 식으로요.
여기서 질문드릴께요. ^^
1. 전송 하려는 header structure에 대하여 buffer 형태로 바꾸어 주어야 하나요? 바꿔야 한다면 어떤식으로 바꿔야 하나요 바꾸는 방법을 모르겠습니다?
2. 두개 따로 보내려면 iovector 구성은 어떤식으로 해주어야 하나요?
참고할 structure ..
struct mds_msg_header {
unsigned int id;
struct sockaddr_in desaddr;
struct sockaddr_in srcaddr;
unsigned int method;
unsigned int cls;
unsigned int len;
};
typedef struct mds_msg_header mds_msg_header;
struct mds_msg_message {
int magic;
mds_msg_header header;
char buffer[1024];
};
코드:
대충 짜본 코드는 이런데 동작을 안하네요. (iovector 부분만 보세요. ^^) void sending(struct mds_msg_message message){ struct msghdr msghdr = { 0 }; struct iovec Iov[2]; Iov[0].iov_base = message.buffer; Iov[0].iov_len = sizeof(message.buffer); Iov[1].iov_base = message.header; Iov[1].iov_len = sizeof(message.header); msghdr.msg_name = desaddr; msghdr.msg_namelen = sizeof(struct sockaddr_in); msghdr.msg_iov = (struct iovec *)Iov; msghdr.msg_iovlen = 1; sendmsg(fd, &msghdr, MSG_DONTWAIT)) }
조금 자세하게 알려주시면 고맙겠습니다. ^^
좋은 하루 되세요.
_________________
댓글 달기