TcpUdp与Socket的学习(2)

来源:互联网 发布:java全角转半角 编辑:程序博客网 时间:2024/05/16 01:05

刚刚整理了udp的,现在整理一下tcp的


写博客的流程一直是:

(背景----->)要实现的功能----->要做的事情----->代码以及结果(----->感触)


下面要实现的功能是:实现客户端与服务端的tcp通信


要做的事情:

        服务端

                创建ServerSocket对象,并绑定端口<-----new ServerSocket(8090);//参数是端口号

                监听连接请求,并返回套接字Socket对象<-----serverSocket.accept();//该方法返回Socket 对象

                获取输入输出流的对象,发送接收数据

                         <-----new BufferedReader(new InputStreamReader(socket.getInputStream()));//socket是上面一步返回的对象

                         <-----new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

                         <-----readLine().toString();//利用上面获得的对象调用读取输出的方法

                         <-----write(string);//参数是要发送的对象

                关闭套接字对象<-----close()

        客户端

                创建Socket对象,并绑定端口<-----new Socket("172.16.17.37", 8090);

                获取输入输出流的对象,发送接收数据

                         <-----new BufferedReader(new InputStreamReader(socket.getInputStream()));//socket是上面一步返回的对象

                         <-----new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

                         <-----readLine().toString();//利用上面获得的对象调用读取输出的方法

                         <-----write(string);//参数是要发送的对象

                关闭套接字对象<-----close()



代码:

下面需要注意的一点,System.getProperty("line.separator")是java的标准换行符,也就是说换成\n也是可以的,但是不加上换行符就会接收不到信息,原因就在惹readLine()这里,他必须要读取到结束符才会返回,否则一直在读取

客户端代码

try {Socket socket = new Socket("172.16.17.37", 8090);//调用套接字的方法获取输出和输入流的对象,并开始网络数据的发送和接收BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//发送和接收信息String string = "客户端-------->服务器端" + System.getProperty("line.separator");writer.write(string);writer.flush();System.out.println("发送数据是:" + string);String string2 = reader.readLine() + System.getProperty("line.separator");System.out.println("接收数据是:" + string2);//关闭套接字对象socket.close();} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

服务端代码

          ServerSocket serverSocket = null;try {//创建ServerSocket对象,并绑定在指定端口上serverSocket = new ServerSocket(8090);//调用accept,监听请求,如果客户端请求连接则接受,并返回socket对象Socket socket = serverSocket.accept();//调用socket类的相关方法获取输出和输入流的对象,开始网络的接收和发送BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//将读取到的数据转化为字符串,并显示出来String string = reader.readLine().toString();System.out.println("我收到的东西是:" + string);//发送字符串给客户端String string2 = "服务器端------>客户端" + System.getProperty("line.separator");writer.write(string2);writer.flush();System.out.println("发送数据是:" + string2);//关闭套接字对象socket.close();} catch (Exception e) {e.printStackTrace();}finally{if(serverSocket != null){try {serverSocket.close();} catch (IOException e) {e.printStackTrace();}}}

结果



0 0
原创粉丝点击