socket 관련 질문입니다.
글쓴이: hana9423 / 작성시간: 토, 2003/03/08 - 10:35오전
서버 프로그램을 작성하고 있습니다.
지금 문제는
TCP/IP 연결을 사용하고 있는데 클라이언트에서 연결을 요청하고 서버에서는
그 연결을 accept하여서 client socket에 연결해 주었습니다.
여기까지는 문제가 없는데..
이제 연결된 Channel을 사용하여 어떠한 메세지를 받으면 그 연결을 다른
Client Socket로 넘겨주고 이전의 Client socket은 사용을 안하려고 합니다.
말이 좀 어렵네요..
Windows에서는 CAsyncSocket::Detach 함수를 사용해서 핸들을 넘겨서
사용했던것 같은데.. 리눅스에서는 이럴때 어떻게 넘겨 주어야 하는지..
벌써 4일째 .. 이것만 보고 있는데 답이 안나오네요.. 답변 부탁드립니다.
Forums:
연결된 socket 은 단지 int 값일 뿐입니다.다른 변수에 넣
연결된 socket 은 단지 int 값일 뿐입니다.
다른 변수에 넣어 그대로 사용가능합니다.
원하시는 것이 혹시 다른 descriptor 번호라면 dup2 를 하신후에 원래 descriptor를 close 하시면 됩니다.
---
http://coolengineer.com
서버 프로그램을 작성하고 있습니다. 지금 문제는 TCP/IP 연결
서버 프로그램을 작성하고 있습니다.
지금 문제는
TCP/IP 연결을 사용하고 있는데 클라이언트에서 연결을 요청하고 서버에서는
그 연결을 accept하여서 client socket에 연결해 주었습니다.
여기까지는 문제가 없는데..
이제 연결된 Channel을 사용하여 어떠한 메세지를 받으면 그 연결을 다른
Client Socket로 넘겨주고 이전의 Client socket은 사용을 안하려고 합니다.
말이 좀 어렵네요..
Windows에서는 CAsyncSocketDetach 함수를 사용해서 핸들을 넘겨서
사용했던것 같은데.. 리눅스에서는 이럴때 어떻게 넘겨 주어야 하는지..
벌써 4일째 .. 이것만 보고 있는데 답이 안나오네요.. 답변 부탁드립니다.
죄송하지만 대답하기전에 질문이 더 어려운듯 하네요. 정확히 어떠한것을 원하는지 잘 모르겠어요. 헤헤~ 하여간 질문을 정확히 해주시는게 더 빠른 답을 얻으실수 있을거 같아요. 대충 생각해보면 dup()나 dup2()로 해결을 하실려고 하는건지 하여간 다시 질문 주세요.
[quote]이제 연결된 Channel을 사용하여 어떠한 메세지를 받
이런것인가요?
listening socket -> client socket#1 -> client socket#2
윗분 답변대로 dup을 사용하셔서 file discriptor를 넘기거나(이게 의도하시는 방법같네요.) 좀더 확실히 하시려면 클라이언트의 정보를 넘겨서 소켓을 새로 만드시면 되겠지요.
[quote]이제 연결된 Channel을 사용하여 어떠한 메세지를 받으면
표현이 좀 애매하긴 하지만, 추정에 다른 프로세스나 쓰레드로 어떻게 연결을 넘기는지에 대한 질문같군요.
프로세스의 경우 fork 한다음
부모는 해당 file discriptor 를 close 하면 되구요.
쓰레드의 경우는, pthread_create 하면 되겠죠.
부모는 해당 file discriptor 를 close 하면 되구요.(단, 자식 쓰레드가 생성되기 전에 닫는것을 막기위해서 좀 트릭을 써야 할것 같네요. 일반적으로 알려진 방법이 뭐죠?)
프로세스나 쓰레드를 새로 생성하지 않고 다른 프로세스로 연결해주는 방법은
제가 자세히는 모르고, 아래를 참조하시기 바랍니다.
http://www.ezdoum.com/stories.php?story=02/07/18/6030539
댓글 달기