首先,对于TCP协议,我们要明确:
TCP:传输控制协议
TCP会尽自己所能,尽量将数据发送给对方;但并不能保证100%可以发送给对方
TCP会在数据发送不到对方的情况下,会给应用层一个错误提示,告知用户发送失败
TCP可以保证接收方(应用层)严格按照发送时的数据顺序接收
TCP保证数据不会出现无意间的损坏(UDP 也做到这点)
TCP尽可能地维护网络质量
客户端:
1.明确服务器地址
2.创建socket连接
3.发送IO流
代码实现:
package test1; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.Scanner; public class TcpClient { public static void main(String[] args) throws IOException { while (true){ System.out.println("发送给服务器端的内容:"); Scanner scanner = new Scanner(System.in); String context = scanner.nextLine(); if("666".equals(context)){ break; } Socket socket = new Socket("127.0.0.1",8080); OutputStream outputStream = socket.getOutputStream(); outputStream.write(context.getBytes()); InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[1024]; int len = inputStream.read(bytes); System.out.println("客户端接受到服务器端相应数据:" + new String(bytes,0,len)); outputStream.close(); socket.close(); } } }
服务端:
1.需要一个明确的地址
2.等待客户端连接过来
3.读取客户端信息
代码实现:
package test1; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.UUID; public class TcpServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8080); System.out.println("服务器端启动!!!"); while (true){ Socket socket = serverSocket.accept(); InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[1024]; int len = inputStream.read(bytes); System.out.println("服务器收到数据:" + new String(bytes,0,len)); OutputStream outputStream = socket.getOutputStream(); String resp = "已收到数据:" + UUID.randomUUID().toString(); outputStream.write(resp.getBytes(StandardCharsets.UTF_8)); inputStream.close(); socket.close(); } } }
运行结果:
客户端:
服务端:
标签:Java,socket,java,TCP,---,new,import,客户端 From: https://www.cnblogs.com/99kol/p/16954064.html