需要了解UDP协议的,可以看往期文章
https://flypeppa.blog.csdn.net/article/details/133273416
TCP/IP参考模型
代码案例
服务端代码
package com.hidata.devops.paas.udp;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;/*** @Description :* @Date: 2023-09-25 15:21*/
public class TCPserver {public static void main(String[] args) throws IOException {//TCP协议,服务端,接收数据//1、创建服务端ServerSocket对象ServerSocket serverSocket = new ServerSocket(10000);//2、监听客户端的连接Socket socket = serverSocket.accept();//3、从连接通道中获取输入流读取数据InputStream inputStream = socket.getInputStream();int b;while ((b = br.read()) != -1){System.out.print((char)b);}//4、释放资源socket.close();serverSocket.close();}
}
客户端代码
package com.hidata.devops.paas.udp;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;/*** @Description :* @Date: 2023-09-25 15:21*/
public class TCPclient {public static void main(String[] args) throws IOException {//TCP协议,客户端,发送数据//1、创建socket对象,//细节:在创建对象的同时,会连接服务器,如果连接不上,代码会报错Socket socket = new Socket("127.0.0.1",10000);//2、从连接通道中获取输出流对象OutputStream os = socket.getOutputStream();os.write("你好".getBytes());//3、释放资源os.close();socket.close();}
}
运行结果
发现服务端虽然接收到信息了,但是出现中文乱码了
解决中文乱码问题
思路:将字节流转为字符流,来解决中文乱码问题
只改造服务端代码
package com.hidata.devops.paas.udp;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;/*** @Description :* @Date: 2023-09-25 15:21*/
public class TCPserver {public static void main(String[] args) throws IOException {//TCP协议,服务端,接收数据//1、创建服务端ServerSocket对象ServerSocket serverSocket = new ServerSocket(10000);//2、监听客户端的连接Socket socket = serverSocket.accept();//3、从连接通道中获取输入流读取数据InputStream inputStream = socket.getInputStream();//字节流转为字符流,解决中文乱码问题InputStreamReader isr = new InputStreamReader(inputStream);BufferedReader br = new BufferedReader(isr);int b;while ((b = br.read()) != -1){System.out.print((char)b);}//4、释放资源socket.close();serverSocket.close();}
}
运行结果
额外补充
1、TCP协议是面向连接的通信协议(通俗一点来说,就是传输之前,必须确保连接是成功的),正好与UDP协议相反,UDP协议是面向无连接的通信协议
2、传输速度比较慢,没有大小限制,数据比较安全