네트워크 멀티스레드 프로그래밍

iyagi의 이미지

Gateway 서버를 개발하려고 하는데요 멀티스레드 프로그래밍을 하려고 합니다.

여러대의 단말기로 부터 Gateway서버(A서버)에 접속되고 데이터를

타 Host 서버(B 서버)에 연결해서 데이터를 전달해주는 프로그램인데요....

단말기 <=> A 서버 <=> B 서버 이렇게 통신을 하죠...

단말기로 부터 접속을 받아주는 Listener 스레드를 하나 생성하고

접속이 들어오면 스레드를 생성해서 연결된 단말기와 통신을 하게 됩니다.

Listener에서 스레드를 생성한후 그 스레드에서 B 서버로 connect 를 하면 에러가 납니다.

에러코드는 25번 이구요, 에러메세지는 Not a typewriter 입니다.

B 서버로 connect시 non-blocking socket을 생성했는데, connect 함수에서 항상 에러가 나네요..

근데 non-blocking socket이 아닌 blocking 소켓을 생성하면 connect 함수가 정상적으로 실행이 됩니다.

원래 그런건가요? 아니면 제가 뭘 잘못 한건가요???

스레드 생성후 호출 함수는 class 내부 함수인 ClientThreadMain를 호출합니다.

일테면

class A
{
public:
ClientThreadMain(void* nSockFD);
}

그 함수에서 Connect() 내부함수를 호출합니다.

제가 멀 잘못한건가요??? 왜 그런건지 답변 부탁드립니다...