Q&A

  • serversocket에서 clientsocket을 disconnect 방법은요?
서버소켓에는 여러개의 클라이언트가 접속되어는 있는뎅..



그중 특정한 1개의 클라이언트만..서버에서 disconnect할수 있는 방법이 있나요?

2  COMMENTS
  • Profile
    타락천사 2000.06.06 21:10
    안녕하세여..타락임다..^^



    좀만 생각하면 풀수 있는 문젠대 아쉽군여..ㅠㅠ



    for i := 0 to ServerSocket1.Socket.ActiveConnections do

    if ServerSocket1.Socket.Connections[i].RemoteAddress = Socket.RemoteAddress;

    ServerSocket1.Socket.Connections[i].Close;



    정확하진 않지만 대충 이런식인거 같군여..



    왕초보 타락천사..^_____^



    델초보 wrote:

    > 서버소켓에는 여러개의 클라이언트가 접속되어는 있는뎅..

    >

    > 그중 특정한 1개의 클라이언트만..서버에서 disconnect할수 있는 방법이 있나요?

  • Profile
    이경문 2000.06.06 07:38
    ServerSocket이 Open되어 있는 경우에 Client의 요청시 계속 Connect가 발생되게 됩니다.

    ServerSocket1.Close를 하면 현재 연결되어 있는 모든 Client의 접속이 종료되게 되지요.

    방법은 전역변수들을 이용하여 OnClientConnect 이벤트이에서 Close를 불러 버리는 것입니다.



    // TForm1의 private이나 // public에 넣은 것이 가장 좋습니다.

    ConnectSocket : TCustomWinSocket;



    procedure TForm1.FormCreate...

    begin

    ConnectSocket := nil;

    end;



    procedure TForm1.OnClientConnect...

    begin

    if ConnectSocket = nil then

    ConnectSocket := Socket

    else

    Socket.Close;

    end;



    procedure TForm1.OnClientDisconnect...

    begin

    if ConnectSocket = Socket then

    ConnectSocket := nil;

    end;