CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): russell (huhu)
날 짜 (Date): 2003년 5월 30일 금요일 오전 10시 20분 22초
제 목(Title): Re: [Q] unix socket 쌓일 수 있는 datagra


 setsockopt를 써서 최대 size(128KB)로 늘려도 동일한 증상을 보이더 군요...

----> dg_serv.c
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <errno.h>

#define MAXLINE 1024

int
main(int argc, char **argv)
{
int sockfd, clilen, rcvbufsize, len;
struct sockaddr_un cliaddr, servaddr;
char recvline[MAXLINE + 1];

char UNIXDG_PATH[30]="unix_sock_dgram";

sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0);

unlink(UNIXDG_PATH);
bzero(&servaddr, sizeof(servaddr));
servaddr.sun_family = AF_LOCAL;
strcpy(servaddr.sun_path, UNIXDG_PATH);

bind(sockfd, (struct sockaddr*) &servaddr, sizeof(servaddr));
rcvbufsize = 256*1024;
len = sizeof(rcvbufsize);
setsockopt( sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbufsize, len);
getsockopt( sockfd, SOL_SOCKET, SO_RCVBUF, &rcvbufsize, &len);
printf("recv buffer size = %d\n", rcvbufsize);

clilen = sizeof(cliaddr);
while (1) {
int n;

getchar();

while( (n = recvfrom(sockfd, recvline, MAXLINE, 
MSG_DONTWAIT, (struct sockaddr*) &cliaddr, &clilen ))>0 ) {
recvline[n]='\0';

printf("Received :%s", recvline);
}

}
}
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.