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();
    }
}

 

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