JAVA WEB 개발 실례 - BIO 개발 실례

9365 단어 자바
JAVA 의 WEB 개발 에서 데이터 전송 은 우리 가 없어 서 는 안 될 일부분 으로 구체 적 인 방식 은 여러 가지 가 있 는데 그 중에서 가장 기본 적 인 것 은 BIO 모델 의 통신 방식 이다.        BIO 의 요청 방식 은 마치 은행 에 가서 업 무 를 처리 하 는 것 과 같 습 니 다. 고객 이 입문 하면 로비 매니저 가 고객 에 게 업 무 를 배정 하고 처리 하 는 창구 가 있 고 고객 은 분 배 된 창구 에 따라 업 무 를 처리 합 니 다.여기 서 로비 매니저 는 서버 의 역할 을 하고 창 은 서버 가 클 라 이언 트 를 위 한 스 레 드 에 해당 하기 때문에 BIO 의 통신 방식 은 '연결 스 레 드' 로 요약 할 수 있다. 즉, 클 라 이언 트 가 연결 요청 이 있 을 때 서버 에서 스 레 드 를 시작 하여 처리 해 야 한다.        다음은 구체 적 인 코드 로 나타 나 는데 관건 적 인 부 위 는 주석 설명 1. 클 라 이언 트 가 있다.
package demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class BIODemo_Client {
    public static void main(String[] args) {
        Client("127.0.0.1", 9999);
    }
    public  static void Client(String url,int port){
        BufferedReader br=null;
        PrintWriter pw=null;
        Socket socket=null;
        try {
            socket=new Socket(url, port);//  socket     
            System.out.println("     ........");
            br=new BufferedReader(new InputStreamReader(socket.getInputStream()));//      Socket     
            pw=new PrintWriter(socket.getOutputStream(), true);//  PrintWriter  socket    
            pw.println("       :11111");
            System.out.println("       ....."+br.readLine());
        } catch (UnknownHostException e) {
            System.out.println("     ");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("   ");
            e.printStackTrace();
        }finally {
            //    
            if (pw!=null) {
                pw.close(); 
                pw=null;
            }           
            if (br!=null) {
                try {
                    br.close();
                } catch (IOException e) {

                    e.printStackTrace();
                }
                br=null;
            }
            if (socket!=null) {
                try {
                    socket.close();
                } catch (IOException e) {

                    e.printStackTrace();
                }
                socket=null;
            }

        }

    }
}

서버
package demo;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class BIODemo_Server {
    public static void main(String[] args) {
        Start(9999);
    }
    public synchronized static void Start(int port) {
        ServerSocket server = null;
        try {
            server = new ServerSocket(port);//     
            System.out.println("     ........");

            while (true) {

                Socket socket=server.accept();// accept      Socket 
                if (socket!=null) {
                    new  Thread(new BioDemo_ServerHandler(socket)).start();// socket           
                }

            }
        } catch (IOException e) {
            System.out.println("       ");
            e.printStackTrace();
        }finally{
            try {
                server.close();
            } catch (IOException e) {

                e.printStackTrace();
            }
        }
    }

}

3. 서버 에서 클 라 이언 트 에 게 새로운 스 레 드 를 요청 하 는 방법
    package demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class BioDemo_ServerHandler implements Runnable{
    private Socket socket;

    public BioDemo_ServerHandler(Socket socket) {
        this.socket=socket;

    }
    @Override
    public void run() {
        BufferedReader  bf=null;
        PrintWriter pw=null;
        try {
            bf=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println("        :"+bf.readLine());
            pw=new PrintWriter(socket.getOutputStream(),true);
            pw.println("       222222222");

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if (bf != null) {
                try {
                    bf.close();

                } catch (IOException e) {
                    e.printStackTrace();
                }
                bf=null;
            }
            if (pw!=null) {
                pw.close();
                pw=null;
            }
            if (socket!=null) {
                try {
                    socket.close();
                } catch (IOException e) {

                    e.printStackTrace();
                }
                socket=null;
            }
        }

    }

}

좋은 웹페이지 즐겨찾기