Java:实现TCP协议发送/接收数据

郎家岭伯爵 2021年09月10日 878次浏览

背景

Java实现TCP协议发送/接收数据。

实现

注:

  • TCP协议需要三次握手以及四次挥手,因此在执行时需要先在Server端侦听端口。否则无法建立Client端与Server端的链接。

Client端

  1. package itheima2;

  2. import java.io.IOException;
  3. import java.io.OutputStream;
  4. import java.net.Socket;
  5. import java.nio.charset.StandardCharsets;

  6. /*
  7. TCP协议发送数据的步骤:
  8. 1、创建客户端的Socket对象
  9. 2、获取输出流,写数据
  10. 3、释放资源
  11. */

  12. public class ClientDemo {
  13. public static void main(String[] args) throws IOException {
  14. //创建客户端的Socket对象
  15. Socket s = new Socket("10.2.120.65",10000); //实际应用中的IP及端口号

  16. //获取输出流,写数据
  17. OutputStream os = s.getOutputStream();
  18. os.write("Hello,World! TCP!".getBytes());

  19. //释放资源
  20. s.close();
  21. }
  22. }

Server端

  1. package itheima2;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;

  6. /*
  7. TCP协议接收数据的步骤:
  8. 1、创建服务器端的Socket对象(ServerSocket)
  9. 2、获取数据流,读数据,并把数据显示在控制台
  10. 3、释放资源
  11. */
  12. public class ServerDemo {
  13. public static void main(String[] args) throws IOException {
  14. //创建服务器端的Socket对象(ServerSocket)
  15. ServerSocket ss = new ServerSocket(10000); //此端口需要对应Client端的端口号,否则无法接收数据

  16. //Socket accept() 侦听要连接到此套接字并接收
  17. Socket s = ss.accept();

  18. //获取数据流,读数据,并把数据显示在控制台
  19. InputStream is = s.getInputStream();
  20. byte[] bys = new byte[1024];
  21. int len = is.read(bys);
  22. String data = new String(bys, 0, len);
  23. System.out.println("数据是:" + data);

  24. //释放资源
  25. ss.close();
  26. }
  27. }