본문 바로가기

Java Programming/Java

[펌]소켓통신

펌 : http://tipssoft.com/bulletin/board.php?bo_table=story&wr_id=12559


- 통신 방법과 규약

 

통신 방식에는 일반적으로 TCP / IP 방식과 UDP 방식 이 있습니다. ( 이외에도 다른 것들이 존재)

 

이 중에서 TCP/ IP 는 쌍방향통신(이기종통신) 으로서 , 1 : 1 통신에 유리 합니다.

 


 

이와 반대로 UDP 통신 은 단방향통신 으로 으로서 1 : 多 통신에 유리합니다.

 


 

두 방식 모두 1 : 1 & 1 : 多 방식으로 사용가능합니다.

 

또 TCP / IP 는 일반적으로 많이 쓰이기 때문에 기본 Protocol( 규약 ) 로 정해져있습니다. 

 

 

이 외에 IPX 라던지 Net BIOS , Net BEUI 라는 통신방식도 있는데, 저런게 있다 정도만 알아두시면 될 것 같습니다.

 

 

==============================================================================

 

Socket  

 

 

 

Socket 이라는 것은 TCP/IP 라는 통신 방식을 좀더 쉽게 사용할수 있도록 한 (API) 함수의 Library 라고 생각하시면 됩니다.

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

 

- 비동기 & 동기 Socket

 

 

Socket 통신의 구현 방식에는  비동기 Socket 과 동기 Socket 두가지 방식이 있습니다.

 

 

비동기 Socket 은 하나의 thread 로 작업을 하므로 동시처리가 불가능 합니다 .

  따라서 Message로 등록하여 처리 하는 방식을 이용하게 됩니다. 그렇기 때문에 Server 가 하는 일이 적어진다는 장점이 있습니다.

또 비동기 방식은 Window O.S 에서만 사용가능합니다.

 

 

이와 반대로 동기 Socket 은 하나의 Server 가 Thread를 여러개 만들어 처리하는 방식을 이용합니다.

 따라서 Server에 부하가 많이 걸린다는 단점이 있습니다. 여타 운영체제들에서 사용가능합니다.

 

 

위와 같은 특성 때문에 Socket 통신 프로그래밍을 배울때는

 처음에는 익숙한 비동기 Socket 통신 방법을 이용하여 TCP / IP 와 Socket 자체에 대한 이해도를 높이고

나중에는 동기 Socket 통신 방법을 이용하여 좀더 좋은(다른 운영체제에서도 사용가능한 ) Program 을 만드는 방식을 택하게 됩니다.

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

- IP Address & PORT

 

 

일반적으로 통신에서 IP Address 는 어떠한 곳의 주소를 나타냅니다. ( 사용자의 컴퓨터 )

따라서 보통의 경우 한 컴퓨터에서 사용자는 하나의 IP Address 를 가집니다.

 

PORT 라는 것은 어떠한 곳의 주소에서 좀 더 정밀한 주소를 나타냅니다 (?)  ( 컴퓨터의 어떤 프로그램)

표현이 애매하지만 하나의 IP Address 내에서 연결되야할 프로그램을 PORT 번호로 구분합니다.


 

( 설명하기가 난해 하네요 ,,, 개념은 알겠는데 ,, 전달력이 ,, )

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Socket 통신이라는 것은 제공하는 입장인 Server 와 제공 받는 입장인 Client 로 나뉩니다.

 

보통의 Socket 통신에서 Client 가 Server 에 접속하려면 Server 가 Listen 상태에 있어야 합니다.

 

Client 가 Connet 함수를 이용하여 접속을 신청하면 Server 는 Accept 라는 함수를 이용하여 확인하며,

 

서버에서 확인하고 접속을 승인하면 Client 는 회선을 확보하게 됩니다.


 

이번시간에 정리 할 것은 Server 쪽에 대한 함수를 배우게 됩니다.

 

====================================================================================

 

Socket - Server

 

 이전과 같이 나눠서 설명해 보자면

 

통신을 일상생활의 핸드폰으로 생각해 보자면

 

일단 가장 필요한건 전화를 받을수 있는 핸드폰이 필요합니다.

 

그 다음으로는 핸드폰의 번호를 만들기 위해 약정서를 등록( 내정보를 등록 ) 하고

 

전화를 받기위해 대기합니다.

 

 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

'Java Programming > Java' 카테고리의 다른 글

Synchronous vs Asynchronous  (0) 2018.02.13
[Java] 소켓통신(Socket)  (0) 2014.07.30
[JAVA] 소켓 프로그래밍[펌]  (0) 2014.07.07
[JAVA]HashMap 클래스  (0) 2014.03.27
[JAVA] 문자열 함수  (0) 2014.03.17