TCP socket

tcp接收

public class SocketTest extends AbstractTests {

    @Test
    public void sockerServer() throws IOException {
        System.out.println("進入到了socket中");
        /**
         * 基於TCP協議的Socket通信,實現用戶登錄,服務端
         */
        //1、創建一個服務器端Socket,即ServerSocket,指定綁定的端口,並監聽此端口
        ServerSocket serverSocket = new ServerSocket(10086);//1024-65535的某個端口
        //2、調用accept()方法開始監聽,等待客戶端的連接
//        Socket socket = serverSocket.accept();
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        OutputStream os =null;
        PrintWriter pw =null;
        while (true) {
            Socket socket = serverSocket.accept();
            //3、獲取輸入流,並讀取客戶端信息
            is = socket.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            String info = null;
            while ((info = br.readLine()) != null) {
                System.out.println("我是服務器,客戶端說:" + info);
            }
            socket.shutdownInput();//關閉輸入流
            //4、獲取輸出流,響應客戶端的請求
            os = socket.getOutputStream();
            pw = new PrintWriter(os);
            pw.write("歡迎您!");
            pw.flush();
            //5、關閉資源
            pw.close();
            os.close();
            br.close();
            isr.close();
            is.close();
//            socket.close();
//            serverSocket.close();
        }
    }

    @Test
    public void socketClient() throws IOException {
        //客戶端
        //1、創建客戶端Socket,指定服務器地址和端口
        Socket socket = new Socket("192.168.9.163", 10086);
        //2、獲取輸出流,向服務器端發送信息
        OutputStream os = socket.getOutputStream();//字節輸出流
        PrintWriter pw = new PrintWriter(os);//將輸出流包裝成打印流
        pw.write("用戶名:admin;密碼:12345");
        pw.flush();
        socket.shutdownOutput();
        //3、獲取輸入流,並讀取服務器端的響應信息
        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String info = null;
        while ((info = br.readLine()) != null) {
            System.out.println("我是客戶端,服務器說:" + info);
        }

        //4、關閉資源
        br.close();
        is.close();
        pw.close();
        os.close();
        socket.close();
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章