자바 소켓 BIO 기반 TCP 통신 실현

2610 단어 자바
BIO
BIO, 즉 동기 화 및 차단.서버 는 ServerSocket 대상 의 accept 방법 에 장애 가 발생 하여 연결 이 들 어 갈 때 계속 실행 할 수 있 습 니 다.데 이 터 를 읽 고 read 방법 을 호출 할 때 도 차단 이 발생 합 니 다.
서버
public class BIOServer {

    public static void main(String[] args) {
        try {
            openServer(8888);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void openServer(int port) throws IOException {
//          ServerSocket
        ServerSocket serverSocket = new ServerSocket();
//            
        serverSocket.bind(new InetSocketAddress(port));
        System.out.println("BIOServer  ...");
        while (true){
//              ,       
            Socket socket = serverSocket.accept();
            System.out.println("    ...");
//               
//            BufferedReader      ,InputStreamReader      ,InputStream      
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            String str = null;
            while ((str = br.readLine()) != null){
                if("quit".equals(str)){
                    break;
                }
                System.out.println(str);
            }
//               
            br.close();
//              socket
            socket.close();
            System.out.println("    ...");
        }

//        System.out.println("BIOServer  ...");

    }

}

3. 클 라 이언 트
public class BIOClient {

    public static void main(String[] args) {
        try {
            connect("127.0.0.1", 8888);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private static void connect(String hostname, int port) throws IOException {
//          socket
        Socket socket = new Socket();
//          
        socket.connect(new InetSocketAddress(hostname, port));
//         
//      BufferedWriter      ,OutputStreamWriter      ,OutputStream      
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

//            ,     
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = null;
        while ((str = br.readLine()) != null){
//                   quit,     
            if ("quit".equals(str)){
                break;
            }
            bw.write(str);
//                 ,  server       
            bw.newLine();
            bw.flush();
        }

//           
        br.close();
//          socket
        socket.close();

    }

}

좋은 웹페이지 즐겨찾기