Q&A

  • 애송이의 소켓(블러킹과 넌블러킹)
안녕하세요?
또 도움을 받아보려구요.. ^^;;(항상 받기만 함~ ^_^;;)

소켓통신에 관한건데요~ 제가 하려는건요~
소켓 A, B가 있다고 하면~ 소켓 A쪽에서 이벤트가 일어날때마다 데이터를 압축해서 B에게 넘겨주지요~ B는 받은 압축된 데이터를 풀어서 정해진 처리를 하구요~ (여기서 저는 넌블러킹이 어울릴꺼 같아서 넌블러킹소켓을 골랐지요~ ^-^;;)

그런데 문제가 생겼는데,,*_*;; A쪽에서 이벤트가 연속적으로 일어나거든요~ 그런데 보내는 데이터가 크면 B쪽에서 압축된 데이터를 푸는데 시간이 걸릴때가 있어요~ 여기서..문제..ㅡ.ㅡ;; 받은 데이터의 압축을 풀고 있는데 데이터가 또 날아오니 문제가 생기는거 같아요..적어도 제 생각에는 말이죠..(혹시 제가 잘못 생각했다면 한수 지도해주세요~)

그래서 동기화가 필요한거 같다는 생각이 들었습니다. 그래서 블러킹 소켓으로 구현하려고 하는데 제가 잘 몰라서요 ^^;; 제가 알기에 블러킹 소켓에서는 데이터를 보내는 한 텀(term)이 '서버소켓 접속->데이터전송->소켓끊기'라고 알고 있는데요..

만약 메세지 보내는 많은 이벤트가 일어나면 '서버소켓접속->데이터전송->소켓끊기'의 주기가 많이 일어나잖아요..이 방법또한 해보니까 에러가 나더라구요..^^;;("Could not connect to "server name." Cause: connection refused (10061)")

그럼 남은 방법이 넌블러킹에서 압축된 데이터를 푸는작업을 쓰래드로 처리하는 방법이 남은거 같은데 아직 해보지는 않았거든요~

그런데 지금까지 제가 해본방법들을 모두 올바르게 구현했는지에 대해 확신이 서지 않아서요.. ^^;; 고수님들께서는 제가 하려는 것에 어떤 방법이 어울리는지 한수 지도해주시면 정말 감사하겠습니다. ^-^;;

윽..쓰다보니 너무 길어졌네여..^-^;;  참,,그리고 혹시 '헥사압축'이란거에 대해 아시는분 계시면 간단한 소개 부탁드리겠습니다.
1  COMMENTS
  • Profile
    김유철 2002.10.11 20:26

    아.. 델파이는 초보고.. VC 프로그래머지만.. 한말씀..

    저도 논블러킹 방식을 사용하여 개발했는데..

    님이 사용하신 방법틀린건 없고.. 쓰레드를 사용해야 되는건 확실함다..

    파일푸는중에 데이터가 들어오면 버퍼에 차곡차곡 저장해놓구

    순차적으로 풀어야 겠죠....