|
TCP서버의 경우
클라이언트가 비정상 접속종료시
접속 종료를 알지 못할 수도 있습니다.
그래서, 일정 시간 클라이언트를 확인하여
응답이 없을 때 자동 접속 종료처리를 합니다.
개발시 보통 이런 상황이 자주 발생하는데
나는 클라이언트 프로그램을 종료 했더라도
서버가 클라이언트를 접속된 상태로 알고 있다면
다시 접속 할 경우
접속 승인 거부를 합니다.
서버가 여러개의 클라이언트를 허용한다면 상관없지만
서버가 1개의 클라이언트만 허용하게 되어 있을 경우
발생하는 문제입니다.
이미 접속된 클라이언트가 있어서
더 못 받는다는 것이지요.
아마, 지금 하시는 외부장비가 단일 클라이언트 접속만 허용하는 것 같습니다.
클라이언트 프로그램 개발시
정상 접속 종료를 하시면서 테스트 해보세요.
비정상 접속종료일 경우
서버가 되는 외부장비를 리셋 하거나
1~2분 후에 클라이언트 프로그럄을 다시 실행해보세요.
위의 문제가 아니라면
아마도
해당 서버가 돌고 있는 외부장비 문제일 듯 합니다.
박태준 님이 쓰신 글 :
: C++ 빌더 입문한지..얼마되지않아 고생중입니다...
:
: PC에서 외부 장비와 접속하는 Client프로그램을 개발해야하는데
:
: 하나의 프로그램에서 4개의 ClientSocket을 이용하여 동시접속해야하는데 ...
:
: 이게 되다 안되다 그러네요 ...
: void __fastcall TForm_NWC3000::CH1ConnectClick(TObject *Sender)
: {
: ClientSocket1->Address = IP_Address1->Text;
: ClientSocket1->Port = atoi(PORT1->Text.c_str());
: ClientSocket1->Active = true;
:
: tflag.tcpflag1 = TCPACTIVE;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm_NWC3000::CH1DisClick(TObject *Sender)
: {
: ClientSocket1->Active = false;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm_NWC3000::CH2ConnectClick(TObject *Sender)
: {
: ClientSocket2->Address = IP_Address2->Text;
: ClientSocket2->Port = atoi(PORT2->Text.c_str());
: ClientSocket2->Active = true;
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm_NWC3000::CH2DisClick(TObject *Sender)
: {
: ClientSocket2->Active = false;
: }
:
: 일단 2개만 접속을 시도했는데 오류가 뜨다 안뜨다 ...그래요 ..접속도 잘 안되고요
:
: ClientSocket1은 접속이 잘 되는데 2 는 접속이 잘안됩니다 ㅜㅜ
:
: 아이피번호랑 포트번호 다 다르게해도 잘 안되요 도움부탁드립니다 ..
|