Q&A

  • ClientSocket을 2개 사용시 문제입니다...
안녕하세요...항상 여기서 도움을 받는 초보입니다...

다름이 아니라 ClientSocket을 사용해 소켓프로그램을 공부중입니다...
Win2000,VB6.0,sp6사용중입니다...

하나의 서버에 두가지 메세지를 요청하고 있습니다...
즉,2개의 클라이언트소켓을 사용합니다...
서버의 ip와 port는 동일하게 사용하고 있습니다...

과정은 서버에 첫번째 파일요청메세지를 보내면 서버에서 인식하고 파일을 클라이언트에 파일을 전송해줍니다.
그러면 클라이언트가 파일을 수신하고, 수신완료메세지를 서버로 보냅니다...
그러면 서버에서 다시 메세지를 인식하여 LED에 점등하는 과정입니다...

그런데 클라이언트에서 첫번째 요청메세지는 수신이 되는데, 두번째 수신완료메세지는 서버로 오지가 않습니다...

그래서 디버그를 해보니 ClientSocket2의
localIP := ClientSocket2.Socket.LocalAddress; 에서 localIP값이 빈값으로 넘어옵니다...

왜 이런 문제가 발생하는지 잘 모르겠네요...
저와 같은 경우를 경험하신분 계시면 도움 부탁드립니다...

------------------------------------------------------
아래는 서버에 메세지요청하는 클라이언트 소스입니다...
//서버에 파일요청하는 메세지 전달부분
procedure TForm1.Button1Click;
begin
   try
       ClientSocket1.Host := '192.168.0.13';
       ClientSocket1.Port := 2345;
       ClientSocket1.Active := True;
   except
       ClientSocket1.Close;
       showMessage( 'Not Connection ');
   end;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;  Socket: TCustomWinSocket);
var
   msg: string;
   localIP:string;
   localHost:string;
begin
   try
       ClientSocket1.Close;

       localHost:=ClientSocket1.Host ;

       localIP := ClientSocket1.Socket.LocalAddress;
       Msg := localIP + '|' + '요청';
       ClientSocket1.Socket.SendText(msg);
       ClientSocket1.Close;
   except
       ClientSocket1.Close;
       Exit;
   end;
end;

//서버에 파일수신완료응답 메세지 전달부분
procedure TForm1.Button2Click;
begin
   try
       ClientSocket2.Host := '192.168.0.13';
       ClientSocket2.Port := 2345;
       ClientSocket2.Active := True;

   except
       ClientSocket2.Close;
       showMessage( 'Not Connection ');
   end;
end;

procedure TForm1.ClientSocket2Connect(Sender: TObject;  Socket: TCustomWinSocket);
var
   msg: string;
   localIP:string;
   localHost:string;
begin
   try
       ClientSocket1.Close;
       ClientSocket2.Close;

       localHost:=ClientSocket2.Host ;
      
       localIP := ClientSocket2.Socket.LocalAddress;//빈값 세팅됨...
       Msg := localIP + '|' + '응답';
       ClientSocket2.Socket.SendText(msg);
       ClientSocket2.Close;
   except
       ClientSocket2.Close;
       Exit;
   end;
end;  
0  COMMENTS