|
멀더 님이 쓰신 글 :
: 멀더입니다...
: 이문제도 아주 고전적인 문제입니다.
: 해결책도 아주 많다는 겁니다.
:
: 이미 Internet을통한 TCP나 UDP 통신을 하는 많은 프로토콜이 만들어져 있죠
: 대표적인게 SMTP, HTTP, IMAP, FTP등...
: 이런 프로토콜이 님께서 문제를 제기한 문제를 어떻게 풀고 있는지, 해당 RFC를 보면
: 알수 있을겁니다...
: 위의 프로토콜을 이용해도 별문제가 없으면 위의 프로토콜중 하나를 사용하시어
: 편하게 필요한데로 바꾸셔서 사용하시면 좋을듯합니다.
:
: 그리고 질문중 서버나 클라이언트가 상대방이 전송한 데이터를 다받았는가 ??? 를 체크하는건
: 순전히 프로토콜핸드쉐이킹의 문제입니다.
: 즉 자동으로 알수는 없다는거죠...
:
: 예로, SMTP의 경우 위와같은 문제를 해결하기 위해 하나의 프로토콜페이지마다 CRLF를 사용하고
: 두줄이상의 스트림데이터인 DATA 부분의 마지막은 CRLF+DOT+CRLF 로 체크합니다.
:
: 위의 internet standard protocol의 경우를 제외한
: 복잡한 비표준 protocol 일수록 구조적인 패킷을 만들어서 encoding과 decoding을 하는데
: network game같은 경우가 이런방식으로 하는경우가 많죠. (보안모듈도 포함시키고)
: 대략 문자열 파싱정도라고 생각하면 맞습니다.
:
: 이상의 저의 생각이고,,, 처음에 언급했던것처럼 해결책은 아주 다양합니다.
:
:
: 이주호 님이 쓰신 글 :
: : C++ builder 6.0에 있는 Component tab의 internet tab에 있는 소켓을 사용하여
: : C/S 프로그램을 만들고 있습니다.
: :
: : Client(n):Server(1) 개념으로 개발을 하고 있습니다.
: : 1. TClientSocket 사용(client 프로그램)
: : -Type => stNonBlocking
: : 2. TServerSocket 사용(Server 프로그램)
: : -Type => stNonBlocking
: :
: : 3. 궁금한점은 Client에는 Server쪽으로 보낸 데이타를 확인하는 방법을 알고 싶습니다.
: : 1) Client에서 Server쪽으로 보낸 데이타를 서버에서 모두 받았는지
: : 모두 받지 못하였을 경우 다시 받는 방법이 궁금하여 이렇게 질문을 합니다.
: : 2) Client에서 데이타전송
: : Server에서 읽음
: : Server에서 읽은 데이타가 정확하지 않거나 일부분만 받음
: : Client에서 재 전송 시도
: : 3) 위 같은 방법으로 해야 될 것 같은데
: : 무엇을 어떻게 해야 할지 망막하여 부탁드립니다.
: :
: : 혹시 위와 같은 문제를 해결하는 방법(알고리즘) 및 소스를 가지고 계시면 리풀 달아 주시거나 메일 부탁드립니다.
|