소켓통신 모델중에 클라는 비동기 서버는 동기 클라는 동기 서버는 비동기 뭐 이런식으로 서로 다른 방식으로 통신을 하는 경우가 있나요? 있으면 언제 저런방식을 사용하는지 알고 싶습니다. 쉬운 예가있으면 들어주셔도 되고요 ㅎㅎ;
요즘 비동기 방식 공부중인데.. 물론 코딩도 어렵지만 이걸 언제 어떻게 왜 사용해야되는지를 구분하는게 더 어려운것 같습니다
부족한 지식 과장되게 설명하겠습니다.
===>>> 잘못된 내용을 사실처럼 말할 수 있으니 주의하시기 바랍니다. <<<=====
동기 방식으로 동작하는 소켓의 기본 동작은 하나의 쓰레드(?)에서 "가" 라는 메시지를 보내고 그 응답 메시지 "응답-가" 를 받을때까지 기다리는 방식입니다.
반면 비동기 방식으로 동작하는 소켓의 기본 동작은 메시지를 보내는 곳(=쓰레드?)과 응답 메시지를 받는곳(=쓰레드?)가 다르기에 메시지를 보내는것과 받는것이 별개로 동작됩니다.
저두 최근(?)에 파일 송수신하는 비동기 서버와 비동기/동기 클라이언트를 구현해서 파일 업로드/다운로드를 직접 수행해 봤는데요.
비동기식 장점은
동기식은 현재 파일 조각을 잘 받았다는 수신을 받은후에야 다음 파일 조각을 보내게 됩니다.
반면에 비동기식은 그냥 쭉 보내면 됩니다. 따라서 대용량 파일을 아주 잘게 쪼개서 보낼 수록 전체 수행 시간 차이는 많이 벌어집니다.
2-3Gbyte 파일 1개를 대략 4kbyte 로 쪼개서 보낼경우 그 차이를 분명히 알 수 있었습니다.
다만 쪼개는 크기를 30~40Kbyte 로 보낼 경우 정확한 이유를 모르겠지만 체감을 느낄정도로 차이가 나지 않았습니다.
비동기식 단점으로는 에러 제어가 어렵다는 점입니다.
혹시 자바라는 언어를 아시면 제가 만든 프로그램에서 이것을 보여드릴 수 있는데요.
관심 있으시면 댓글로 남겨주세요.
혹시 지금이라도 말씀하신 프로그램을 좀 볼수 있을까요? ㅎㅎ;
안년ㅇ
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
부족한 지식 과장되게 설명하겠습니다.
부족한 지식 과장되게 설명하겠습니다.
===>>> 잘못된 내용을 사실처럼 말할 수 있으니 주의하시기 바랍니다. <<<=====
동기 방식으로 동작하는 소켓의 기본 동작은 하나의 쓰레드(?)에서 "가" 라는 메시지를 보내고 그 응답 메시지 "응답-가" 를 받을때까지 기다리는 방식입니다.
반면 비동기 방식으로 동작하는 소켓의 기본 동작은 메시지를 보내는 곳(=쓰레드?)과 응답 메시지를 받는곳(=쓰레드?)가 다르기에 메시지를 보내는것과 받는것이 별개로 동작됩니다.
저두 최근(?)에 파일 송수신하는 비동기 서버와 비동기/동기 클라이언트를 구현해서 파일 업로드/다운로드를 직접 수행해 봤는데요.
비동기식 장점은
동기식은 현재 파일 조각을 잘 받았다는 수신을 받은후에야 다음 파일 조각을 보내게 됩니다.
반면에 비동기식은 그냥 쭉 보내면 됩니다. 따라서 대용량 파일을 아주 잘게 쪼개서 보낼 수록 전체 수행 시간 차이는 많이 벌어집니다.
2-3Gbyte 파일 1개를 대략 4kbyte 로 쪼개서 보낼경우 그 차이를 분명히 알 수 있었습니다.
다만 쪼개는 크기를 30~40Kbyte 로 보낼 경우 정확한 이유를 모르겠지만 체감을 느낄정도로 차이가 나지 않았습니다.
비동기식 단점으로는 에러 제어가 어렵다는 점입니다.
혹시 자바라는 언어를 아시면 제가 만든 프로그램에서 이것을 보여드릴 수 있는데요.
관심 있으시면 댓글로 남겨주세요.
이제서야봤네요 ^^;
혹시 지금이라도 말씀하신 프로그램을 좀 볼수 있을까요? ㅎㅎ;
안년ㅇ
댓글 달기