netstat 에서 bind 까지만 한 스트림 소켓이 보이지 않는데.. 정
글쓴이: raymundo / 작성시간: 금, 2003/11/14 - 1:58오전
안녕하세요,
... sck_inet = socket(AF_INET,SOCK_STREAM ,0); memset(&adr_inet,0,sizeof adr_inet); adr_inet.sin_family = AF_INET; adr_inet.sin_port = htons(39000); adr_inet.sin_addr.s_addr = INADDR_ANY; len_inet = sizeof adr_inet; bind(sck_inet, (struct sockaddr *)&adr_inet, len_inet); system("netstat -pa --tcp); ...
위와 같이 스트림 소켓을 생성하고, 바인드 한 후에 netstat 으로 출력을 시켰습니다. 그런데 해당 39000 번 포트의 정보가 전혀 출력되지 않네요. netstat 에 -a 옵션이 있으면 listen 하고 있지 않더라도 출력된다고 매뉴얼페이지에 나와 있는데요.
listen 까지 한 후에 netstat 을 하면 그때는 나옵니다. 또는 스트림이 아니라 데이타그램 소켓을 생성하고 바인드 한 후 netstat -pa --udp 로 출력을 시켜도 다음과 같이 나옵니다.
udp 0 0 *:39000 *:* 26659/a021
스트림일 때는 안 나오는 게 정상인가요? 위 소스를 적을 때는 생략했지만 바인드 등의 리턴값으로 에러체크도 다 해 주었습니다. 에러는 없었고요.
조언을 부탁드립니다.
Forums:
linux는 안나오는 것 같습니다.원래 bind만 되면, sock
linux는 안나오는 것 같습니다.
원래 bind만 되면, socket state diagram의 closed 상태가 시작하는 것입니다.
solaris 같은 경우는 BOUND
aix, hpux 는 CLOSED 상태로 나옵니다.
---
http://coolengineer.com
으윽... 그렇군요. 확인해 주셔서 감사합니다.
으윽... 그렇군요. 확인해 주셔서 감사합니다.
좋은 하루 되세요!
으윽... 일단 다른 플랫폼에서는 출력이 된다는 말을 듣고 그럼 리눅스의
으윽... 일단 다른 플랫폼에서는 출력이 된다는 말을 듣고 그럼 리눅스의 netstat 의 버그인가 아니면 다른 이유가 있는가를 찾아봤는데 못 찾겠네요. (관련 단어들만으로 검색을 하면 결과는 수도 없이 많이 나오긴 하는데)
정확한 이유를 아시는 분 안 계신가요? ㅠ,.ㅠ
P.S. 오늘에야 알았는데 xml 출력 링크가 있었군요! 새로 올라온 글 체크하기가 훨씬 편해졌네요. (원래 있었나..?? -_-a;;;)
좋은 하루 되세요!
댓글 달기