需要了解UDP协议的,可以看往期文章
https://flypeppa.blog.csdn.net/article/details/133273416
TCP/IP参考模型
https://img-blog.csdnimg.cn/04b4df52f2ce499fbf100b23fbb392f8.png" alt="在这里插入图片描述" />
代码案例
服务端代码
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();
}
}
运行结果
https://img-blog.csdnimg.cn/f31476d92fab46d2a2491306a302a80e.png" alt="在这里插入图片描述" />
发现服务端虽然接收到信息了,但是出现中文乱码了
解决中文乱码问题
思路:将字节流转为字符流,来解决中文乱码问题
只改造服务端代码
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();
}
}
运行结果
https://img-blog.csdnimg.cn/ff67d32225964ece8f8fd2a97b22310a.png" alt="在这里插入图片描述" />
额外补充
1、TCP协议是面向连接的通信协议(通俗一点来说,就是传输之前,必须确保连接是成功的),正好与UDP协议相反,UDP协议是面向无连接的通信协议
2、传输速度比较慢,没有大小限制,数据比较安全