udp data(sendmsg 한거 수신할때...?) 수신에 대한 질문 입니다.
글쓴이: air74 / 작성시간: 월, 2004/12/13 - 4:04오후
sendmsg 를 이용하여 두개의 iovector 를 전송을 하였는데 ..
recvfrom 이나 기타 udp data 수신 api 를 이용하여 수신 한 다음에 iovector 를 어떻게 구분 하는지 모르겠습니다. 구분에서 iovector[0] 부분을 sn_msg_header type 으로 casting 해야 하는데. 쩝. 그럼 여러 고수님들의 조언 바랍니다.
/* 스트럭쳐 정의 부분 */
struct sn_msg_header {
enum sn_msg_header_type type;
u_int flags;
u_hyper id;
u_int len;
u_hyper cli_id;
struct sockaddr_in srcaddr;
struct sockaddr_in desaddr;
u_int method;
u_int cls;
};
typedef struct sn_msg_header sn_msg_header;
struct sn_msg_message {
int magic;
sn_msg_header header;
int iov_count;
struct iovec iovector[2];
sn_msg_message *next;
};
/* sendmsg 를 이용하여 두개의 iovector로 전송하는 부분 */
h->request->iovector[0].iov_base = (void *)(h->request);
h->request->iovector[0].iov_len = sizeof(sn_msg_message);
h->request->iovector[1].iov_base = (void *)(data_in);
h->request->iovector[0].iov_len = len;
msghdr.msg_iov = h->reply->iovector;
msghdr.msg_iovlen = h->reply->iov_count;
if (-1 == sendmsg(sn_xudp.fd, &msghdr, MSG_DONTWAIT)) {
perror("xudp_send_reply");
}
/* 수신 하는 부분 (iovector[0] 부분을 sn_msg_header 로 캐스팅 해야 함 */
recvfrom( ... buffer...){
-> 여기서 질문 ?? iovector[0] , [1] 과 구분을 하여
-> iovector[0] 부분을 sn_msg_header 타입으로 casting 해야 하는데 어떤식을 해줘야 할지 모르겠습니다.
}Forums:


댓글 달기