。공부 。

<Java>Socket통신을 할려면?

kyoe 2007. 9. 22. 15:11
TCP 통신을 하기 위해선 Socket 이 필요하다
* 주요 클래스들 *
-Socket = 특정컴퓨터접속하기
-ServerSocket = 서버만들기
-InetAddress = IP주소 관리하기
Socket 에는 클라이언트의 정보가 담겨있다고 생각하면 된다.(ip주소,포트번호,접속시도시간,버퍼크기,등등..)

* 서버만들기 *
ServerSocket 으로 서버를 만든다.(물론 포트번호는 지정해줘야한다.)
ServerSocket ss = new ServerSocket(12345); -> 12325번 포트를 사용하는 서버를 만든다.
Socket soc = ss.accept();  ->  접속한 클라이언트의 소켓정보를 소켓 soc에 저장하는게 가능해 진다.
이렇게 얻어진 소켓정보를 이용해서 접속해온 상대방에 메시지를 전달할수있는 수있는 소켓이 만들어지게 된다
만약 n:n채팅을 원한다면 접속해온 클라이언트를 정보를 소켓에 담아 그 소켓을 배열에 저장해  원하는 클라이언트로 메시지를 보낼수 있다.

* 클라이언트 쪽에서 서버로 접속 *
InetAddress 클래스는 생겅자를 가지고 있지 않기 때문에 static메서드를 이용해서 객체를 생성할수있다.
getAllByName("...")은 해당 도메인(Domain)과 매핑(Mapping)된어 있는 모든 주소를 되돌려 주는 메서드이고 getByName("...")은 주소 하나만을 되돌려 주는 메서드이다.
InetAddress ia = InetAddress.getByName("192.168.0.1"); ->주소 '192.168.0.1'을 갖는 객체 ia를 생성
Socket soc = new Socket(ia,12345); ->ia가 가리키는 주소의 12345번 포트에 접속
 
이렇게 하면 간단하게 소켓통신을 할수 있는 구도가 잡힌다. 코드 전체를 올리진 못했지만 나머진 여러분들이 직접해보시길.. (물론 코드 전체를 올린자료가 뒷부분에 있습니다. 직접 코딩하는게 도움이 많이 되겠죠?)