꼭 같은 경우는 아닐지 모릅니다. (아래는 개념정도이니 다른 고수 분들의 답변이 있을겁니다.)
외부와의 통신에서 소켓을 쓸 경우든, 한 시스템 내에서 인터프로세싱을 큐나 소켓 등, 여하한 방법으로 하든지 (제가 경험한 선에서는) 패킷안에 들어있는 데이타가 완벽하게 순서대로 들어갔다고 보지 않고 프로그램을 짭니다.
또한 순서대로 들어갔다 손 처도, 보내는 쪽과 받는쪽이 원하는 크기대로 포맷에 맞게 패킷이 오고 간다고 생각 하지 않고 프로그램을 짭니다.
특히나 멀티 스레드 로 처리해야 할 경우에는 그러한 조건들 (첫째 - 순서대로 여야 한다, 둘째 - 정해진 크기대로 패킷에 들어있어야 한다) 을 감안해서 프로그램을 짜야 합니다. 그러다 보니 송수신 프로그램이 좀 복잡해 집니다. 즉, 양쪽에서 (특히 받는 쪽에서) 버퍼를 가지고 데이타 내부의 sequence number 등을 참조해 가면서 (버퍼에서) 빼 내서 후방에 있는 스레드들에게 포맷에 맞는 데이타를 공급하게 해야 합니다.
[송신 프로그램] -> [소켓] -> (네트워크) -> [소켓] -> [수신프로그램] -> [버퍼] -> [데이타 조립 및 공급 프로그램] -> [데이타 처리용 다중 스레드 1 ~ N]
글로만 쓰려면 이렇게 구름잡는 얘기가 되고, 그렇다고 특정 코드를 여기 올리는것도 별 의미가 없을것같고, 그냥 개념적인것을 써 보았습니다.
비슷한 경우 - 제 경험 상
꼭 같은 경우는 아닐지 모릅니다. (아래는 개념정도이니 다른 고수 분들의 답변이 있을겁니다.)
외부와의 통신에서 소켓을 쓸 경우든, 한 시스템 내에서 인터프로세싱을 큐나 소켓 등, 여하한 방법으로 하든지 (제가 경험한 선에서는) 패킷안에 들어있는 데이타가 완벽하게 순서대로 들어갔다고 보지 않고 프로그램을 짭니다.
또한 순서대로 들어갔다 손 처도, 보내는 쪽과 받는쪽이 원하는 크기대로 포맷에 맞게 패킷이 오고 간다고 생각 하지 않고 프로그램을 짭니다.
특히나 멀티 스레드 로 처리해야 할 경우에는 그러한 조건들 (첫째 - 순서대로 여야 한다, 둘째 - 정해진 크기대로 패킷에 들어있어야 한다) 을 감안해서 프로그램을 짜야 합니다. 그러다 보니 송수신 프로그램이 좀 복잡해 집니다. 즉, 양쪽에서 (특히 받는 쪽에서) 버퍼를 가지고 데이타 내부의 sequence number 등을 참조해 가면서 (버퍼에서) 빼 내서 후방에 있는 스레드들에게 포맷에 맞는 데이타를 공급하게 해야 합니다.
[송신 프로그램] -> [소켓] -> (네트워크) -> [소켓] -> [수신프로그램] -> [버퍼] -> [데이타 조립 및 공급 프로그램] -> [데이타 처리용 다중 스레드 1 ~ N]
글로만 쓰려면 이렇게 구름잡는 얘기가 되고, 그렇다고 특정 코드를 여기 올리는것도 별 의미가 없을것같고, 그냥 개념적인것을 써 보았습니다.
여의도자바
테스트 해보세요
제가 연습하던 소스를 적어봅니다.
http://blog.daum.net/knightofelf/1165
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기