Q&A

  • TCP 라는 놈을 믿어도
채팅 프로그램을 만들고 있습니다.



인디를 안쓰고 TClientSocket을 가지고 p2p 형식으로 만들었습니다. 근데 로컬에서는 무지 잘되고 안되는거 없는데 원격에서 접속을 하면 ocx 에러 뻑뻑 뜨고..(메모리 발룬테이션인가?/ 원가... 잘못된 참조를 했다고...흑흑)



증상은 이렇습니다.

비 블록킹으로 TServerSocket을 생성합니다. 그리고 TClientSocket이 접속한 다음에 메세지 그냥 날려 줍니다. 물론 정의된 프로토콜이죠.



TCP 라서 서버측에서 데이터를 받을때 버퍼나 그런 것은 안했습니다. 할 줄도 모르고요



프로토콜의 형식은 EnterRM&1&211.198.25.63&26#15

이런 식입니다. 메세지&방 번호&접속자의 아이피&나이&끝났다는 표시



물론 &는 토큰 구분자고요



랜상에서는 정말 아무 문제가 없습니다. 근데 게임방에서 접속하거나 조금 먼곳... 속도 느린곳등에서 하면 일정하지 않은 시점에서 메모리 참조 오류에러등이 떨어집니다.



근데 문제는 이런것이 메인 서버에서도 떨어집니다. 일정한 곳에서 떨어지는 것도 아니고....



걱정입니다.



아는 분의 말씀에 의하면 비블록킹인 경우 네트워크 상태에 따라서 쪼개져서 올 수도 있으니까 버퍼를 두는 것이 좋지 않느냐 라고 했는데 메세지의 길이가 무지 짧은데....



꼭 그래야 하는건지... 그리고 만약 그래야 하면 어떤 식으로 버퍼를 둬야 하는건지...



고수님들의 조언 부탁 드립니다.

1  COMMENTS
  • Profile
    서철기 2001.01.13 18:59
    일단.. 믿으면 안 돼죠!

    의심되는 부분을 다 플밍으로.. 꽉꽉 막아야죠!



    참고로 저는 서버 하나에 다중의 접속자가 2-10MB 파일을

    동시에 다운로드 받는 프로그램을 만들었습니다.

    님의 채팅 유저보다는 적겠지만.



    실제 다중 유저 테스트도 동시에 10여명 정도..

    이상이 없더군요..



    단, 전송한 내용을 상당히 자주 잃어 버리더군요..

    특히 WIN2000에서는 더욱



    그래서 내용의 정확성 체크를

    &오류체크&내용~~~~~~~~내용&오류체크&

    이런 식으로 두어서 잘못 되었으면..

    같은 내용을 다시 요청하는 식으로 ..



    FTP와 같은 속도는 나오지 않지만..잘 되더군요..



    암튼..저의 견해로는 TCP는 괜찮은 놈이더군요!!



    즐프하세요





    델초보오 wrote:

    > 채팅 프로그램을 만들고 있습니다.

    >

    > 인디를 안쓰고 TClientSocket을 가지고 p2p 형식으로 만들었습니다. 근데 로컬에서는 무지 잘되고 안되는거 없는데 원격에서 접속을 하면 ocx 에러 뻑뻑 뜨고..(메모리 발룬테이션인가?/ 원가... 잘못된 참조를 했다고...흑흑)

    >

    > 증상은 이렇습니다.

    > 비 블록킹으로 TServerSocket을 생성합니다. 그리고 TClientSocket이 접속한 다음에 메세지 그냥 날려 줍니다. 물론 정의된 프로토콜이죠.

    >

    > TCP 라서 서버측에서 데이터를 받을때 버퍼나 그런 것은 안했습니다. 할 줄도 모르고요

    >

    > 프로토콜의 형식은 EnterRM&1&211.198.25.63&26#15

    > 이런 식입니다. 메세지&방 번호&접속자의 아이피&나이&끝났다는 표시

    >

    > 물론 &는 토큰 구분자고요

    >

    > 랜상에서는 정말 아무 문제가 없습니다. 근데 게임방에서 접속하거나 조금 먼곳... 속도 느린곳등에서 하면 일정하지 않은 시점에서 메모리 참조 오류에러등이 떨어집니다.

    >

    > 근데 문제는 이런것이 메인 서버에서도 떨어집니다. 일정한 곳에서 떨어지는 것도 아니고....

    >

    > 걱정입니다.

    >

    > 아는 분의 말씀에 의하면 비블록킹인 경우 네트워크 상태에 따라서 쪼개져서 올 수도 있으니까 버퍼를 두는 것이 좋지 않느냐 라고 했는데 메세지의 길이가 무지 짧은데....

    >

    > 꼭 그래야 하는건지... 그리고 만약 그래야 하면 어떤 식으로 버퍼를 둬야 하는건지...

    >

    > 고수님들의 조언 부탁 드립니다.