안녕하세요, Indy9.0을 사용중인데요..계속 클라이언트가 강제로 끊기네요..
아휴..디비는 mysql을 사용했습니당..
Indy 서버 컴포넌트의 onExecute 이벤트 내용인데요..
With AThread.Connection do
Begin
Str:= ReadLn;
Header:= Copy( Str, 1, 5 );
IF Header = 'Login' then //클라이언트가 접속해왔을 때//
Begin
IF CheckSameId( GetMsg( Str ) ) then //디비를 검색하는부분입니다. 같은 아디가
Begin // 있는지 검색..//
Str:= 'Logfa'; //같은 아디가 있따면 로그인 실패//
WriteLn( Str );
Exit;
end;
ListItem:= UserLv.Items.Add;
ListItem.Caption:= GetMsg( Str );
// ListItem.SubItems[0]:= TIdIOHandlerSocket( IoHandler ).Binding.PeerIp;
With ZMQuery1 do
Begin
Active:= False;
Sql.Clear;
Sql.Add( 'Insert Into NowUser( Id, Ip )' );
Sql.Add( ' Values ( :a, :b )' );
ParamByName('a').AsString:= GetMsg( Str );
ParamByName('b').AsString:= ListItem.SubItems[0];
ExecSql;
end;
BroadCastMessage('', Str );
end;
end;
end;
여기서 CheckSameId부분에서 접속이 끊기구요..거길 주석처리로 막아두면 그 다음 끊기는 곳은
ListItem.SubItems[0]:= .. 이부분에서 끊깁니다. 클라이언트 IP주소를 적는 부분이서요..
그리고 Insert into NowUser .. 유저를 등록하는 부분인데 여기서도 끊기네여~..아 우..
Indy를 첨 써보는뎅..쫌 힘드네여..-.-;;
수고하세요~~
|