当前位置:   article > 正文

TCP通信 -- 接收并反馈(全)_tcp接收数据

tcp接收数据

TCP通信整体过程:

  1. 1.【服务端】启动,创建ServerSocket对象,等待连接。
  2. 2.【客户端】启动,创建Socket对象,请求连接。
  3. 3.【服务端】接收连接,调用accept方法,并返回一个Socket对象。
  4. 4.【客户端】Socket对象,获取OutputStream,向服务端写出数据。
  5. 5.【服务端】Scoket对象,获取InputStream,读取客户端发送的数据。

 客户端(发送数据)

  1. 1.创建Socket通信管道
  2. 2.获取IO流对象(输出)
  3. 3.写数据
  4. 4.释放资源
  5. Socket socket = new Socket("IP地址",端口号);
  6. OutputStream os = socket.getOutputStream();
  7. os.write("需要写入的数据"); //可以进行流的增强
  8. os.close();

服务端(接收数据

  1. 1.创建ServerScoket通信管道
  2. 2.连接客户端Socket对象(监听方法)
  3. 3.获取IO流对象(输入)
  4. 4.读数据
  5. 5.释放资源
  6. ServerSocket ss = new ServerSocket(端口号);
  7. Socket socket = ss.accept();
  8. InputStream is = socket.getInputStream();
  9. int ch = is.read(); //可以进行流的增强
  10. is.close();

 

记住就只有俩个点:建立通信管道获取输入输出流 + 同时写接收数据(易)和传输数据(涉及到键盘输入)

客户端代码:

  1. import java.io.*;
  2. import java.net.InetAddress;
  3. import java.net.Socket;
  4. import java.util.Scanner;
  5. /*
  6. TCP通信 --2接收并反馈
  7. * */
  8. public class Client {
  9. public static void main(String[] args) throws IOException {
  10. System.out.println("===客户端启动===");
  11. //1、创建Socket通信管道 并连接至服务端
  12. Socket socket = new Socket(InetAddress.getLocalHost(),9999);
  13. //2、通过Socket管道 获得一个字节输出流
  14. OutputStream os = socket.getOutputStream();
  15. PrintStream ps = new PrintStream(os);//打印字节流就要将字节流os传参
  16. Scanner sc = new Scanner(System.in);
  17. while(true){
  18. System.out.println("请输入信息:");
  19. String msg = sc.nextLine();
  20. ps.println(msg);
  21. ps.flush();
  22. //接收服务端反馈
  23. BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  24. String Msg = bfr.readLine();
  25. System.out.println("服务端返回信息:" + Msg);
  26. }
  27. }
  28. }

服务端

  1. package com.itheima.b02TCPTest2;
  2. import java.io.*;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. import java.util.Scanner;
  6. public class Server {
  7. public static void main(String[] args) throws IOException {
  8. System.out.println("===服务端启动===");
  9. //1、创建serversocket对象
  10. ServerSocket ss = new ServerSocket(9999);
  11. //2、通过socket通信管道 将监听信息返回
  12. Socket socket = ss.accept();
  13. //3、接收信息 收到的字节流 转换为字符流 再加上缓冲流
  14. BufferedReader bfr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  15. //readLine 缓冲流读取的方法
  16. String msg;
  17. while((msg = bfr.readLine()) != null){
  18. System.out.println(socket.getRemoteSocketAddress() + "发送信息:" + msg);
  19. //服务端返回信息
  20. System.out.println("请输入你想回复的信息:");
  21. OutputStream os = socket.getOutputStream();
  22. PrintStream ps = new PrintStream(os);
  23. Scanner sc = new Scanner(System.in);
  24. ps.println(sc.nextLine());
  25. ps.flush();
  26. }
  27. }
  28. }

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号