| [ 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); } } } |