Q&A

  • 서버소켓이 클라이언트 소켓의 접속을 끊는 방법??
한번 올렸던 질문인데 아직도 답을 찾지를 못하고 있습니다.



클라이언트가 접속을 종료하겠다는 메세지를 보내면 서버소켓이 그 세션만 접속을 종료하게 하려면 어떻게 해야 합니까??



예를 들어 3번째 클라이언트가 서버에 접속을 종료하겠다는 메세지를 보내면 서버는 알아서 그 클라이언트의 접속만 끊고 접속자 리스트에서 제거를 해야 합니다.



serversocket.close 하면 모든 클라이언트의 접속이 끊어져서 사용하지를 못하고 명확하게 나온책도 없고 해서 지금 무지 고민하고 있습니다. 잉~ 머리가 다 빠져요....



아시는 분들 답좀 주세요...

2  COMMENTS
  • Profile
    김상호 2000.11.15 16:55
    serversocket1.socket.connection[x].close

    라고 하면 될것 같은데 한번 해보세요. 여기서 x 는 끊으려고 하는 곳의 서버에 연결된 순서





    volf wrote:

    > 한번 올렸던 질문인데 아직도 답을 찾지를 못하고 있습니다.

    >

    > 클라이언트가 접속을 종료하겠다는 메세지를 보내면 서버소켓이 그 세션만 접속을 종료하게 하려면 어떻게 해야 합니까??

    >

    > 예를 들어 3번째 클라이언트가 서버에 접속을 종료하겠다는 메세지를 보내면 서버는 알아서 그 클라이언트의 접속만 끊고 접속자 리스트에서 제거를 해야 합니다.

    >

    > serversocket.close 하면 모든 클라이언트의 접속이 끊어져서 사용하지를 못하고 명확하게 나온책도 없고 해서 지금 무지 고민하고 있습니다. 잉~ 머리가 다 빠져요....

    >

    > 아시는 분들 답좀 주세요...

  • Profile
    테라플롭스 2000.11.18 22:35
    '''''''''''''''''''''''''''''''''''''

    헉헉헉......................

    procedure TForm1.Edit1KeyDown(Sender : TObject; var Key : Word;

    Shift : TShiftState);

    var

    i : integer;

    begin

    if key = vk_return then

    if client.active then

    client.Socket.SendText(deit1.text)

    else

    for i := 1 to lbClient.items.count do

    if Server.Socket.Connection[i-1].handle =

    settoint(lbClient.items[lbClient.ItemIndex]) then

    Server.Socket.Connections[i-1].SendText(edit1.Text);

    end;









    클라이언트가 서버에 연결되었을때 호출되는 이벤트....^^

    procedure TForm1.serverClientDisconnect(Sender : TObject;

    Socket : tCustomWinSocket);

    begin

    moServer.lines.add('client connect');

    lbClient.items.add(inttostr(socket.handle));

    end;



    클라이언트가 연결을 해제하였을 경우 서버에서 호출되는 이벤트임다.

    procedure TForm1.serverClientDisconnect(Sender : TObject;

    Socket : TCustomWinSocket);

    var

    i : integer;

    begin

    i := lbClient.items.Indexof (inttostr(Socket.handle));

    lbClient.items.Delete(i);

    moServer.lines.add('Client close');

    end;

    혹시나 도움이 될까여.....지도 초보라서여........

    차마 설명까지는.......................하간 첫번째 나온 예제가 가장 기본인거 가타여

    즐프하세여.....(손가락 아프도록....)

    김상호님이 하신 말씀도.......같은 거 같군여



    /////////////////////

    김상호 wrote:

    > serversocket1.socket.connection[x].close

    > 라고 하면 될것 같은데 한번 해보세요. 여기서 x 는 끊으려고 하는 곳의 서버에 연결된 순서

    >

    >

    > volf wrote:

    > > 한번 올렸던 질문인데 아직도 답을 찾지를 못하고 있습니다.

    > >

    > > 클라이언트가 접속을 종료하겠다는 메세지를 보내면 서버소켓이 그 세션만 접속을 종료하게 하려면 어떻게 해야 합니까??

    > >

    > > 예를 들어 3번째 클라이언트가 서버에 접속을 종료하겠다는 메세지를 보내면 서버는 알아서 그 클라이언트의 접속만 끊고 접속자 리스트에서 제거를 해야 합니다.

    > >

    > > serversocket.close 하면 모든 클라이언트의 접속이 끊어져서 사용하지를 못하고 명확하게 나온책도 없고 해서 지금 무지 고민하고 있습니다. 잉~ 머리가 다 빠져요....

    > >

    > > 아시는 분들 답좀 주세요...