[질문]perl 에서 소켓프로그래밍시에..
글쓴이: redglim / 작성시간: 월, 2003/06/02 - 4:44오후
펄에서 소켓 프로그래밍을 해볼까 했는데,
초보라 처음부터 막히네요..
일단 메인 쓰레드에서 다음과 같이 accept 를 하고,
socket descriptor 를 배열에 저장 한 후에, 자식 쓰레드를 깨우고,
$client_address = accept(CLIENT, SERVER); $client_fd[$iput] = fileno(CLIENT);
자식 쓰레드에서는 다음과 같이, 부모가 저장해 둔 socket descriptor
를 받아와서 select 후 처리 하려고 합니다.
$connfd = $client_fd[$iget]; $readin = $excepin = ""; vec($readin, $connfd, 1) = 1; $excepin = $readin; $nfound = select($rout=$readin, undef, $eout=$excepin, $timeout);
그런데 select 후에 recv 를 하려고 하니
recv 함수 는 socket descriptor 가 아닌 handler 자체를 넘겨주어야 하는 것 같더군요..
이럴 경우 어찌 해야 할지..
fileno 가 handler 에서 descriptor 를 뽑아내듯이 그 반대(?) 함수도 있는지요.. 혹은 handler 자체를 부모가 저장해 두려면 어떤 방식으로 해야 할지요..
단순히 스칼라 변수에 저장해서는 안 되는 것 같더군요..
답변 부탁드립니다..
Forums:
c 기준으로 하면..
perl은 잘 모르겠으나..
언듯 소스를 보니 c 기반인 듯하여 말씀드리자면..
c에서는
fileno 와 대칭 되는 개념으로
fdopen 이 있습니다.
근데 recv에는 socket descriptor가 들어가는게 맞지 않나여?
댓글 달기