FreeBSD에서 socket 생성시 에러가 안납니다.
글쓴이: bugiii / 작성시간: 일, 2003/08/03 - 4:07오후
안녕하세요?
FreeBSD에서 socket을 생성하는데 미리 열려진 것을 포함해서 1024개 이상을 만들 때, (개수 제한 푸는 문제가 아니구요) 분명히 -1을 리턴하든가해서 못만든다고 알려주지않나요?
왜 계속해서 소켓번호를 1024로 넘겨주는 건지...
리턴값이 -1이 되게하든가 다른 방법으로 잘못됐다는 걸 알 수 있는 방법이 있는건가요?
socket에서 그냥 넘어가니까 다음에 오는 connect에서 에러가... 우우웅...
부디 가르침을...
Forums:
간단하게라도 해당하는 부분의 소스를 올려주시는 것이 어떨까요?
간단하게라도 해당하는 부분의 소스를 올려주시는 것이 어떨까요?
어찌나 졸린지..~~
아래와 같습니다. 어느분이 스캐너 말씀을 하시길래 pth를 사용해서 간단
아래와 같습니다. 어느분이 스캐너 말씀을 하시길래 pth를 사용해서 간단하게 해볼려고 했는데요. pth_connect_ev에서 막긴 했습니다만... 찜찜해서요.
그럼, 부탁드립니다.
그냥..
방법이 없다면
accept 할때와 close할때 카운팅을 하도록 하면....
안될까요?
변수 하나 둬서 --;
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
한 프로세스에서 열 수 있는 파일 디스크립터 개수 제한을 알아내고 이미
한 프로세스에서 열 수 있는 파일 디스크립터 개수 제한을 알아내고 이미 열려 있는 fd 개수 알아낸 다음에 작업을 하라는 말씀이신가요?
그렇게 해도 되는건가요? (유닉스쪽은 초짜라...)
p.s. accept는 없는데요... -_-;
Re: FreeBSD에서 socket 생성시 에러가 안납니다.
저도 초짜라 잘은 모르지만요
1024개에서 뭔가 제한을 걸고 싶다면
변수를 하나두고 0으로 초기화 한다음
그 변수가 == 1024 인지 체크 하는겁니다
아니라면
소켓을 생성할때 그 변수값을 += 1 해주는겁니다
만약에 1024라면 원하시던 -1로 리턴할때와 같은 방법으로
처리를 하시면 되고요
그리고 소켓을 close 할때 그 변수값을 -= 1 해주면
원하시는 결과를 얻을수 있지 않을까 싶습니다
그럼
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
네. 개수를 안다면 그렇게 해도 괜찮겠습니다만,제가 원하는 것은 개수
네. 개수를 안다면 그렇게 해도 괜찮겠습니다만,
제가 원하는 것은 개수 제한이 있다면 socket()이 '더 못만들겠다'고 -1을 리턴해야 옳지않은가 해서요.
os별로 제한은 다 틀릴테고 설정마다 틀릴테고 알아내는 방법도 틀릴테고...
그러니, 못만드는 상황을 제대로 알려줘야 한다 (알고싶다) 는 것입니다.
그럼, 총총...
그건.....
man socket하면 각[현재 사용하고 있는]OS별로 잘 나올텐데요 --;
리눅스는 -1를 리턴한다고 나오는데 BSD는 다른거 보네요
승자는 자기보다 우월한 사람을 보면 존경심을 갖고 그로부터 배울 점을 찾지만 패자는 자기보다 우월한 사람을 만나면 질투심을 갖고 어디 구멍난 곳이 없는지 찾는다.
- 하비스
프비에서도 마찬가지로 -1 돌려준다고 나오거든요...[url]ht
프비에서도 마찬가지로 -1 돌려준다고 나오거든요...
http://www.freebsd.org/cgi/man.cgi?query=socket&apropos=0&sektion=0&manpath=FreeBSD+4.8-RELEASE&format=html
냠...
socket의 리턴값이 0이상의 값이라는 것은,소켓이 제대로 만들
socket의 리턴값이 0이상의 값이라는 것은,
소켓이 제대로 만들어 졌다는 것을 의미하지 않나요?
1024개 이상의 FD를 생성할 수 있는 설정이 된 프리비인것 같습니다만.
pstat -T 로 maxfiles값을 확인해보세요.
지금 제 상황은 다음과 같습니다. sysctl 로 kern.maxfile
지금 제 상황은 다음과 같습니다. sysctl 로 kern.maxfiles 를 변경하기도 해보았습니다.
#pstat -T
139/16000 files
0M/1008M swap space
#limit descriptors
descriptors 7351
입니다.
쉘에서 limit descriptors 로 1024보다 작거나 같으면 원하는 동작을 합니다.
하지만 크면... 여전하군요.
제가 뭘 잘못 알고 있는 걸까요? T.T
댓글 달기