안녕하세요.. accept를 이용해서 서버 소켓을 열어 fork를 이용하여 통신 하는 방법은 알겠는데 서버 socket을 2개를 연다는 것이 이해가 잘 안됩니다.
고수님들 부탁드립니다.
서버 소켓은 일단 받기 위한 소켓이라고 보시면 됩니다.
listen하면 클라이언트에서 연결되는 소켓을 기다리게 되는 것입니다.
클라이언트 소켓이 연결이 되면 Accept가 발생되는 거죠...(마치 수화기를 들듯이...)
이제서야 자유롭게 통신이 가능하게 됩니다.
하지만 여기서 forking를 하지 않게 되면 클라이언트 소켓과 서버 소켓은 서로 맞물려서 다른 요청을 받지 못하게 됩니다.
그래서 forking를 하는 것이고 listen을 계속 하고 있게 됩니다.
결국 forking후에는 listen소켓과 클라이언트 소켓과 통신하는 소켓이 존재하게 되는 것입니다.
만약 서버에서 listen소켓을 2개를 동시에 열어야 한다면 포트 번호를 다르게 해서 열면 됩니다.
좋은 하루되세요...
각각 bind, listen 후에..
두 개의 socket에 대해 select 를 하세요.
connect 시도가 들어오면, read FDSET에 잡히게 됩니다.
해당하는 socket을 accept 해주면됩니다.
참고로, http://bbs.kldp.org/viewtopic.php?t=1045
ps -ef | grep inetd
해서 나오는 inetd 의 PID를
strace -p <inetd pid>
로 확인해보세요.
전형적인 예입니다.
---http://coolengineer.com
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
서버소켓에 대해...
서버 소켓은 일단 받기 위한 소켓이라고 보시면 됩니다.
listen하면 클라이언트에서 연결되는 소켓을 기다리게 되는 것입니다.
클라이언트 소켓이 연결이 되면 Accept가 발생되는 거죠...(마치 수화기를 들듯이...)
이제서야 자유롭게 통신이 가능하게 됩니다.
하지만 여기서 forking를 하지 않게 되면 클라이언트 소켓과 서버 소켓은 서로 맞물려서 다른 요청을 받지 못하게 됩니다.
그래서 forking를 하는 것이고 listen을 계속 하고 있게 됩니다.
결국 forking후에는 listen소켓과 클라이언트 소켓과 통신하는 소켓이 존재하게 되는 것입니다.
만약 서버에서 listen소켓을 2개를 동시에 열어야 한다면 포트 번호를 다르게 해서 열면 됩니다.
좋은 하루되세요...
각각 bind, listen 후에..두 개의 socket에 대해
각각 bind, listen 후에..
두 개의 socket에 대해 select 를 하세요.
connect 시도가 들어오면, read FDSET에 잡히게 됩니다.
해당하는 socket을 accept 해주면됩니다.
참고로, http://bbs.kldp.org/viewtopic.php?t=1045
ps -ef | grep inetd
해서 나오는 inetd 의 PID를
strace -p <inetd pid>
로 확인해보세요.
전형적인 예입니다.
---
http://coolengineer.com
댓글 달기