Q&A

  • 서버 소켓 , 클라이언트 소켓을..
안녕하세요..



질문이.. 어떤거냐믄여~ ^^



서버쪽 프로그램 에 있는 listbox 아이템들을



클라이언트 쪽 listbox 로 옮기고 싶어요..



실시간으로 되야 하고 아이템 문자열 이 중복도 되면 안되구요..



어떤 방식으로 하면 좋을까 생각 하는 중인데.. 영~~ 생각이 안나네요..



어느 프로그램에 쓰이냐믄..



채팅 프로그램 인데요..



서버쪽 에서는 클라이언트 대화명을 서버 listbox 에 저장하죠..



그것을 클라이언트가 처음에 접속 하거나 또는 방안에 새로운 사람이 들어올때



방안에 있는 사람들의 대화명을 담고있는 서버쪽



listbox 에서 클라이언트쪽 listbox 에 표시 해야 하는데.. !



어떤 방식으로 보낼지가 난감 합니다 ㅜ.ㅜ;



제가 코딩 하면 이상하게 중복되고 특수문자가 들어가고 그러더라구요..



질문이 난해 하죠 ^^



그럼 고수님들의 답변 기다리며.. 저는 이만..





1  COMMENTS
  • Profile
    류종택 2001.03.26 00:12
    웹에서 기냥 코딩해보이는 거라 에러가 있을 수 있습니다.



    1. ListBox에서 중복된 문자 입력 거부

    Procedure Add(ListBox:TListBox; UserID:String; ....);

    Begin

    If ListBox.Items.IndexOf(UserID) > -1 then

    ListBox.Items.Add(UserID)

    Else 이미 저장된 사용자;

    End;



    2. 중복 또는 특수문자가 출현하는 이유

    아마도 소켓 전송 시 전송되어야할 단위를 표시안해주신 것 같습니다.

    소켓은 버퍼를 사용하기 때문에 (물론 강제로 플러쉬할 수 있지만)

    여러번 나눠보낸 것이 한 번에 또는 한번에 보낸 것이 여러번을 나뉘어서

    전달될 수 있습니다. 그러니 한글이 두바이트인 것을 감안할 때

    중간에 짤리면 희한한 문자가 생길 수도 있지요.

    이를 위해서는 전송되어야할 단위마다 무조건 #13#10 한 줄 먹임을 넣는 방법도

    있고, 모든 단위마다 데이타식으로 보내서 처리하는 방법도 있습니다.

    따라서 소켓을 받는 쪽에서는 TStringList에 담아서 한 줄 한 줄 처리하면 됩니다.

    보내려는 데이타가 너무 큰경우에는 데이타 방식으로 해야합니다.

    중간에 짤리면 생각과 다른 엉뚱한 결과가 나타나니까요.

    하지만, 채팅과 같은 간단한 프로그램에서는 모든 데이타 마다 한줄 먹이고

    받는 쪽에서 한 줄씩 처리하면 간단히 해결될 것입니다.





    From 류..



    이마루 wrote:

    > 안녕하세요..

    >

    > 질문이.. 어떤거냐믄여~ ^^

    >

    > 서버쪽 프로그램 에 있는 listbox 아이템들을

    >

    > 클라이언트 쪽 listbox 로 옮기고 싶어요..

    >

    > 실시간으로 되야 하고 아이템 문자열 이 중복도 되면 안되구요..

    >

    > 어떤 방식으로 하면 좋을까 생각 하는 중인데.. 영~~ 생각이 안나네요..

    >

    > 어느 프로그램에 쓰이냐믄..

    >

    > 채팅 프로그램 인데요..

    >

    > 서버쪽 에서는 클라이언트 대화명을 서버 listbox 에 저장하죠..

    >

    > 그것을 클라이언트가 처음에 접속 하거나 또는 방안에 새로운 사람이 들어올때

    >

    > 방안에 있는 사람들의 대화명을 담고있는 서버쪽

    >

    > listbox 에서 클라이언트쪽 listbox 에 표시 해야 하는데.. !

    >

    > 어떤 방식으로 보낼지가 난감 합니다 ㅜ.ㅜ;

    >

    > 제가 코딩 하면 이상하게 중복되고 특수문자가 들어가고 그러더라구요..

    >

    > 질문이 난해 하죠 ^^

    >

    > 그럼 고수님들의 답변 기다리며.. 저는 이만..

    >

    >