Socket 프로 그래 밍 및 자바 실현

5650 단어 SocketJava
자바 는 네트워크 프로 그래 밍 에 사용 할 수 있 는 언어 로 두 가지 기능 이 강 한 네트워크 지원 체 제 를 제공 합 니 다.URL 은 네트워크 자원 에 접근 하 는 클래스 와 Socket 으로 통신 하 는 클래스 로 서로 다른 요 구 를 만족 시 킵 니 다.하 나 는 URL 이 인터넷 자원 에 접근 하 는 데 사용 되 는 응용 이다.다른 하 나 는 client/server(클 라 이언 트/서버)모델 에 대한 응용 및 특정 특수 한 프로 토 콜 을 실현 하 는 응용 입 니 다.통신 과정 은 TCP/IP 프로 토 콜 에서 전송 층 인터페이스 socket 을 바탕 으로 이 루어 집 니 다.본 고 는 Socket 프로 그래 밍 의 자바 실현 방법 을 간단하게 소개 하고 자 한다.
클 라 이언 트 가 서버 간 에 사용 하 는 대부분의 통신 구성 요 소 는 socket 인 터 페 이 스 를 기반 으로 이 루어 집 니 다.Socket 은 두 프로그램 간 에 양 방향 데이터 전송 을 하 는 네트워크 통신 점 으로 주소 와 포트 번호 가 표시 되 어 있다.모든 서비스 프로그램 은 서 비 스 를 제공 할 때 하나의 포트 에서 진행 되 어야 하 며,이 서 비 스 를 사용 하려 는 클 라 이언 트 도 이 포트 에 연결 해 야 한다.Socket 은 전송 층 을 바탕 으로 하기 때문에 비교적 원시 적 인 통신 프로 토 콜 체제 이다.Socket 의 데이터 표현 형식 을 통 해 바이트 흐름 정보 이기 때문에 통신 쌍방 이 특정한 구체 적 인 응용 을 완성 하려 면 반드시 쌍방 이 약정 한 방식 으로 데이터 의 포맷 과 해석 을 해 야 한다.우 리 는 Socket 프로 그래 밍 을 사용 하 는 것 이 비교적 번 거 롭 지만 더욱 강 한 유연성 과 광범 위 한 사용 분 야 를 가 진 다 는 것 을 알 수 있다.
어떤 친구 들 은 클 라 이언 트/서버 작업 모델 이 도대체 어떤 것 이 냐 고 물 어 볼 것 이다.자,다음은 그림 과 결합 하여 그들의 작업 모델 을 소개 하고 싶 습 니 다.
그렇다면 자바 응용 프로그램 은 어떻게 상기 과정 을 실현 합 니까?java.net 패키지 에는 두 가지 종류의 Socket 과 ServerSocket 이 있 는데 각각 클 라 이언 트 와 서버 에 Socket 통신 을 만 드 는 데 사용 된다.
먼저 클 라 이언 트 프로그램 이 작성 한 절 차 를 살 펴 보 겠 습 니 다.
1.먼저 Socket 류 의 구조 함 수 를 호출 하고 서버 가 지정 한 IP 주소 나 지정 한 호스트 이름과 지정 한 포트 번 호 를 매개 변수 로 하여 Socket 흐름 을 만 듭 니 다.Socket 흐름 을 만 드 는 과정 에서 서버 에 통신 연결 을 요청 하 는 과정 을 포함 합 니 다.
2.클 라 이언 트 통신 Socket 을 만 든 후.Socket 방법 getInputStream()과 getOutputStream()을 사용 하여 입력/출력 흐름 을 만 들 수 있 습 니 다.이렇게 Socket 류 를 사용 하면 네트워크 입 출력 도 스 트림 대상 으로 바 뀌 는 과정 이다.
3.입 출력 스 트림 대상 의 해당 방법 으로 글 씨 를 읽 고 스 트림 데 이 터 를 절약 합 니 다.스 트림 은 통신 에 사용 되 는 Socket 과 연결 되 어 있 고 Socket 은 서버 측 과 연결 되 는 점 이기 때문에 데 이 터 는 서버 에서 받 거나 서버 로 전 송 됩 니 다.이때 우 리 는 바이트 흐름 데 이 터 를 클 라 이언 트 와 서버 간 의 협의 에 따라 처리 하고 쌍방의 통신 임 무 를 완성 할 수 있다.
4.통신 작업 이 끝 난 후에 우 리 는 스 트림 대상 의 close()방법 으로 네트워크 통신 에 사용 되 는 입 출력 흐름 을 닫 고 Socket 대상 의 close()방법 으로 Socket 을 닫 습 니 다.
다음은 간단 한 예 를 통 해 클 라 이언 트 프로그램의 작성 을 소개 하고 싶 습 니 다.
     :

  import java.io.*;

  import java.net.*;

  public class SocketCommunicationClient

  {

   public static void main(String[] args)

   {

   try{

   Socket clientSocket =new Socket ("mice",9000);//     Socket    mice    9000   

   OutputStream output =clientSocket.getOutputStream();//  Socket          

   DataInputStream input=new DataInputStream(clientSocket.getInputStream());

   file://                       

   int c;

   String response;

   while (( c= System.in.read())!=-1)//            ,          

    {

    output.write((byte)c);

    if(c=='
')// ,     {      output.flush();      response=input.readLine();      System.out.println("Communication:"+response);     }    }    output.close();    input.close();    clientSocket.close();    } catch (Exception e){     System.err.println("Exception :"+e);    }   }   }

이 프로그램 은 매우 간단 한 데이터 통신 의 예 입 니 다.프로그램 은 먼저 Socket 을 만 들 고 호스트 mice 의 포트 9000 과 연결 한 다음 에 입 출력 흐름 을 엽 니 다.그 다음 에 프로그램 은 표준 입력 수신 문 자 를 입력 하고 흐름 에 기록 합 니 다.한 줄 을 채 울 때마다(사용자 키 로 Enter 에 들 어 가 는 것 을 표지 로 합 니 다).버퍼 에 있 는 문자열 을 mice 에 있 는 서버 엔 드 프로그램 으로 보 내 처리 하고 서버 엔 드 의 응답 을 기다 리 고 있 습 니 다.input.readLine()방법 호출 은 응답 정 보 를 받 을 때 까지 프로그램 이 정 체 됩 니 다.프로그램 은 사용자 가 중단 자 를 입력 할 때 까지 이 과정 을 반복 합 니 다.마지막 프로그램 은 socket 입 출력 흐름 을 닫 고 socket 과 서버 의 연결 을 닫 습 니 다.
위 에서 우 리 는 자바 를 사용 하여 클 라 이언 트 의 Socket 인터페이스 프로그램 을 만 드 는 방법 을 보 았 습 니 다.다음은 서버 쪽 의 Socket 인터페이스 프로그램의 자바 실현 방법 에 대해 간략하게 이야기 하고 싶 습 니 다.그 과정 은 다음 과 같 습 니 다.
1.먼저 ServerSocket 류 를 호출 하여 특정한 포트 번 호 를 매개 변수 로 하여 ServerSocket 대상 을 만 듭 니 다.즉,서버 측의 서비스 프로그램 이 지정 한 포트 에서 감청 하 는 Socket 입 니 다.
2.서버 엔 드 프로그램 은 ServerSocket 대상 의 accept()방법 을 사용 하여 클 라 이언 트 프로그램의 연결 요청 을 받 습 니 다.이 때 서버 엔 드 는 클 라 이언 트 가 보 낸 연결 요청 을 받 을 때 까지 정체 상 태 를 유지 합 니 다.이 방법 은 새로운 Socket 류 의 인 스 턴 스 를 되 돌려 주 고 클 라 이언 트 와 구축 한 통신 링크 가 서비스 프로그램 에 있 는 통신 점 을 대표 합 니 다.자바 의 다 중 스 레 드 프로 그래 밍 방법 을 사용 하면 동시 서버 를 실현 하고 다른 고객 의 연결 요청 을 계속 감청 할 수 있 습 니 다.
3.새 Socket 대상 을 사용 하여 입력,출력 스 트림 대상 을 만 듭 니 다.
4.스 트림 대상 의 방법 으로 클 라 이언 트 와 의 데이터 전송 을 완성 하고 약정 한 협의 에 따라 클 라 이언 트 의 요청 데 이 터 를 식별 하고 처리 하 며 처리 한 결 과 를 클 라 이언 트 에 게 되 돌려 줍 니 다.
5.클 라 이언 트 작업 이 끝나 면 서버 엔 드 프로그램 이 클 라 이언 트 와 통신 하 는 흐름 과 통신 하 는 Socket 을 닫 습 니 다.
6.서버 프로그램 이 실 행 될 때 감청 용 Socket 을 닫 아야 합 니 다.
서버 쪽 프로그램의 자바 구현 을 살 펴 보 겠 습 니 다.
     :

  import java.net.*; 

  import java.io.*; 

  public class SocketCommunicationServer 

  { 

   public static void main(String[] args) 

   try 

   { 

    boolean flag=true;//        

    Socket client=null;//  Socket client            

    String inputLine; 

    ServerSocket serverSocket =new ServerSocket (9000);//   9000       Socket 

    System.out.println("      9000   ");

    file://     serverSocket.getLocalPort()       

    while(flag) 

    { 

     client=serverSocket.accept();

     file://       Socket   ,                

     DataInputStream input=new DataInputStream(new BufferedInputStream(client.getInputStream())); 

     PrintStream output=new PrintStream(new BufferedOutputStream(client.getOutputStream()); 

     while (( inputLine= input.readLine())!=null) 

      { 

       if(inputLine.equals("Stop")) 

       { 

        flag=false; 

        break; 

       } 

       output.println(inputLine); 

       output.flush(); 

      } 

      output.close(); 

      input.close(); 

      client.close(); 

     } 

     serverSocket.close(); 

     }catch(IOException e){} 

    } 

   } 

  }

이상,저 는 Socket 프로 그래 밍 의 메커니즘 과 자바 를 사용 하여 Socket 프로 그래 밍 을 하 는 실현 방법 에 대해 간략하게 이야기 하 였 으 며,여러분 에 게 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기