2010. 4. 28. 13:57 Program.../Java Language
자바를 배워보자 Java NET (2) - Socket 통신
3. Socket
(1) 설명
<1> 사전적의미 : (전구의) 소켓 -> 꽂는 구멍
<2> 프로그램적의미 : 네트웍 통신을 위한 디바이스간의 통신 경로(연결객체)
사용자에게 네트워크에 접근할 수 있게 인터페이스(통로/체널)를 제공하는 클래스
(2) 종류
<1> SOCK_STREAM (연결지향 동기통신-전화,채팅,메신져)
-> 스트림을 주고 받을 수 있게 하는 Socket 으로 양방향 통신이 가능한 소켓
(기본 프로토콜 : TCP[Transfer Control Protocol]
[1]java.net.Socket
1) 주요메소드
- Socket(String host, int port) : 생성자
-> 서버의 호스트와, 포트값을 받아서 서버에 연결하기 위한 연결 객체를 생성한다.
- getInputStream()
-> 연결된 다른소켓쪽에서 보내진 데이터를 받아들인다.
- getOutputStream()
-> 연결된 다른소켓쪽으로 데이터를 보낸다.
(ex: 002day/NET4~5Client.java)
(ex: 003day/NET6~7Client.java - 파일전송)
(ex: 004day/NET8~9Client.java - 멀티채팅)
[2] java.net.ServerSocket
1) 설명 : 기다리다가 연결을 시도하는 요청을 받으면 연결지향 Socket(SOCK_STREAM)을
생성시켜주는 객체를 모델링한 클래스
- ServerSocket(int port)
-> 서버소캣 생성자로 파라미터로 포트번호를 받는다. 해당 포트로 연결을 준비한다.
-> 포트번호는 0~65535 가 사용가능하며 0~1023(Well-Known Port) 까지는
OS에서 사용하고있는 포트라 사용불가(충돌일어남)
2) 주요메소드
- accept()
(socket)까지 만들어지는 연결을 듣고 그것을 받아들인다.
-> 클라이언트와 연결통로를 만들고 연결될때까지 스레드가 대기(sleep).(소켓 객체리턴)
- close()
-> 연결객체이므로 close해주어야 한다.
(ex: 002day/NET4~5Server.java)
(ex: 003day/NET6~7Server.java - 파일전송)
(ex: 004day/NET8~9Server.java - 멀티채팅)
<2> SOCK_DGRAM (비연결지향 비동기 통신-편지,이메일...)
-> 데이터그램 통신용 소켓으로 양방향 통신이 가능한 소켓
(기반프로토콜 : UDP[User Datagram Protocol]
<3> SOCK_RAW (ping 프로그램)
-> 데이터 전송의 높은 수준의 제어를 필요로 할 때 사용하는 Socket 으로 자바에서는
보안상 지원하지 않는다.
(기반프로토콜 : ICMP[Internet Control Messege Protocol])
(3) 통신방식
<1> TCP방식의 Socket 통신
[1] 연결 지향 통신 방식
[2] 전화에 비유(신뢰적)
[3] ServerSocket, Socket 을 이용한 프로그램
[4] 프로그램 절차
<< Server측 >>
ServerSocket ss 생성
ss.accept()
Socket s 생성
<< Client측 >>
Socket s 생성
<< 통신 >>
Socket s(서버측) <-- 메세지 --> Socket s(클측)
cf) 메세지 : 기본형, 레퍼런스형(Serializable - ex:String)
[5] 사용예
- 채팅, 실시간 데이터 전송, 메신져, 네트웍게임, PtoP
<2> UDP방식의 DatagramSocket 통신
[1] 비연결 지향 통신 방식
[2] 편지에 비유(비신뢰적)
[3] DatagramSocket, DatagramPacket 을 이용해서 프로그램
[4] 프로그램 절차
<< Server측 >>
DatagramSocket ds 생성 // 편지함
DatagramPacket dp 생성 // 편지(틀)
ds.receive(dp), ds.send(dp)
<< Client측 >>
DatagramSocket ds 생성 // 편지함
DatagramPacket dp 생성 // 편지(틀)
ds.receive(dp), ds.send(dp)
[5] 사용예
- 인터넷방송, 이메일, 뉴스그룹, 쪽지
(ex: 006day/UDP1~3.java)
'Program... > Java Language' 카테고리의 다른 글
자바 이미지 썸네일 프로그램 (0) | 2010.04.28 |
---|---|
자바를 배워보자 Java RMI (0) | 2010.04.28 |
자바를 배워보자 Java NET (1) (0) | 2010.04.28 |
자바를 배워보자 Java NET (사전조사) (0) | 2010.04.28 |
자바를 배워보자 Java IO (3) (0) | 2010.04.28 |