Synchronized로 검색한 결과 :: 시소커뮤니티[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

회원가입 I 비밀번호 찾기


SSISO Community검색
SSISO Community메뉴
[카페목록보기]
[블로그등록하기]  
[블로그리스트]  
SSISO Community카페
블로그 카테고리
정치 경제
문화 칼럼
비디오게임 스포츠
핫이슈 TV
포토 온라인게임
PC게임 에뮬게임
라이프 사람들
유머 만화애니
방송 1
1 1
1 1
1 1
1 1
1

Synchronized로 검색한 결과
등록일:2008-03-06 13:02:17
작성자:
제목:Socket 클래스


이  클래스는  소켓을  구현한  것이다.  소켓은  연결하고자  하는  서버의  IP  주소와  포트  번호를  필요로  한다.  클라이언트에서  소켓  객체를  만들면,  소켓은  곧바로  주어진  IP주소와  포트  번호로  연결을  시도한다.  서버  소켓은  다른  소켓을  만들어  클라이언트  소켓과  연결시킬  것이다.  서버  측의  소켓과  클라이언트  소켓이  연결되면  소켓의  입출력  스트림을  얻어와서  데이터를  서로  주고받을  수  있다.  

Socket  클래스의  멤버를  살펴보고  실제로  코딩해  보자.  

☞  Socket  클래스의  유용한  생성자  

public  Socket(String  host,  int  port)  throws  UnknownHostException,  IOException
host(IP  주소  문자열)와  port(포트  번호)의  서버로  연결하는  소켓을  생성한다.
public  Socket(InetAddress  address,  int  port)  throws  IOException
address(IP  주소  객체)와  port(포트  번호)의  서버로  연결하는  소켓을  생성한다.
  

  

☞  Socket  클래스의  유용한  메소드

  

public  InetAddress  getInetAddress()

public  int  getPort()

연결된  서버의  주소를  반환하거나,  포트  번호를  반환한다.

public  InetAddress  getLocalAddress()

public  int  getLocalPort()

로컬  주소를  반환하거나,  로컬  포트번호를  반환한다.

public  InputStream  getInputStream()  throws  IOException

소켓의  입력  스트림을  반환한다.

public  OutputStream  getOutputStream()  throws  IOException

소켓의  출력  스트림을  반환한다.

public  void  bind(SocketAddress  bindpoint)  throws  IOException

public  boolean  isBound()

bindpoint에  해당하는  로컬  주소(IP주소+포트번호)에  결합하거나,  결합  상태를  반환한다.

public  Synchronized  void  close()  throws  IOException

public  boolean  isClosed()

소켓을  닫거나,  소켓의  닫힘  상태를  반환한다.

public  boolean  isConnected()

소켓이  연결된  상태면  true를,  아니면  false를  반환한다.

public  void  shutdownInput()  throws  IOException

public  boolean  isInputShutdown()

입력  스트림을  닫거나,  입력  스트림의  닫힘  상태를  반환한다.

public  void  shutdownOutput()  throws  IOException

public  boolean  isOutputShutdown()

출력  스트림을  닫거나,  출력  스트림의  닫힘  상태를  반환한다.
  

Socket  클래스의  멤버  중에서  유심히  살펴볼  것은  getInputStream과  getOutputStream이다.  이  두  메소드가  실제적으로  통신에  필요한  메소드이기  때문이다.

먼저  쉬운  예제부터  해보자.  앞에서  연습한  예제  "Server1.java"의  서버소켓에  접속하는  클라이언트를  만들어보자.
  

Client1.java


import  java.net.*;

import  java.io.*;

public  class  Client1{

    public  static  void  main(String[]  args){

        Socket  client=null;

        try{

            System.out.println("서버와의  연결을  시도합니다.");

            client=new  Socket("127.0.0.1",  7777);                                  //  x1

            System.out.println("연결되었습니다.");

            

        }catch(Exception  e){

            System.out.println("연결  실패..");

        }finally{

            try{

                if(client!=null)  client.close();                                                      //  x2

            }catch(IOException  ie){}

        }

    }

}  

앞에서  만든  "Server1.class"를  먼저  실행시킨  후에  "Client1.class"를  실행시키자.  클라이언트가  서버에  접속하려면  먼저  서버가  동작하고  있어야하기  때문이다.  x1행의  "127.0.0.1"은  로컬  시스템의  IP  주소를  나타내는  것이다.  통신  프로그램을  개발할  때  서로  다른  컴퓨터에서  서버와  클라이언트  프로그램을  실행시켜  테스트하는  것은  많은  시간이  소요되므로  바람직한  방법이  아닐  것이다.  따라서  하나의  컴퓨터에서  loopback을  이용하여  통신  프로그램을  개발하는  것이다.  loopback이란  마치  다른  곳에서  수신된  것처럼  자신이  보낸  신호를  자신이  수신하여  처리하는  것을  의미한다.  

아무튼  "Server1.class"가  실행되고  있는  상태에서  "Client1.class"를  실행하면,  x1행에서  소켓을  생성하고  주어진  서버소켓에  연결한  후  x2행에서  소켓을  닫는다.  서버  측에서는  클라이언트의  연결  요청을  감지하여  클라이언트의  소켓과  newSocket과  연결시키고  자신은  다른  소켓을  기다린다.  연결이  이루어지면  그때부터  필요한  데이터를  주고받을  수  있다.

  출처  :  http://java.pukyung.co.kr/Lecture/Chapter21.php