diff --git a/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/TCPServer.java b/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/TCPServer.java new file mode 100644 index 0000000..0a98638 --- /dev/null +++ b/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/TCPServer.java @@ -0,0 +1,84 @@ +package com.markilue.java_learning.network; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintStream; +import java.net.InetSocketAddress; +import java.net.ServerSocket; +import java.net.Socket; + +/** + *@BelongsProject: java_learning + *@BelongsPackage: com.markilue.java_learning.network + *@Author: dingjiawen + *@CreateTime: 2022-12-22 18:54 + *@Description: TODO TCP套接字通信编程实例 + *@Version: 1.0 + */ +public class TCPServer { + + //服务端代码 + public static void main(String[] args) throws IOException { + //创建一个ServerSocket,用于监听客户端的连接请求 + ServerSocket serverSocket = new ServerSocket(); + //绑定一个地址和端口,此后通过这个地址和端口监听客户端的请求 + serverSocket.bind(new InetSocketAddress("127.0.0.1",8000)); + + //循环不断接受来自客户端的连接 + while (true){ + System.out.println("创建好了连接,等待客户端"); + //接收到了客户端的连接 + Socket socket = serverSocket.accept(); + System.out.println("收到客户端请求并接受"); + //io流交互通信 + PrintStream printStream = new PrintStream(socket.getOutputStream(), true, "UTF-8"); + printStream.println("服务器说:"+socket.getInetAddress()+",来了老弟"); + BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); + System.out.println("收到来自客户端的信息:"+in.readLine()); + System.out.println("接受完毕,准备关闭监听"); + //关闭 + printStream.close(); + in.close(); + socket.close(); +// break; + + } + + /* + 打印结果: + 创建好了连接,等待客户端 + 收到客户端请求并接受 + 收到来自客户端的信息:客户端向您问好 + 接受完毕,准备关闭监听 + 创建好了连接,等待客户端 + */ + + } + +} + +//TCP客户端 +class TCPClient{ + + + public static void main(String[] args) throws IOException { + //创建一个Socket,向服务器发出连接请求 + Socket socket = new Socket(); + socket.connect(new InetSocketAddress("127.0.0.1",8000));//连接指定端口 + + //IO流交互通信 + BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); + System.out.println("来自服务器端的信息:"+reader.readLine()); + //向服务器写数据 + PrintStream ps = new PrintStream(socket.getOutputStream(), true, "UTF-8"); + ps.println("客户端向您问好"); + + //关闭连接 + reader.close(); + socket.close(); + //打印结果:来自服务器端的信息:服务器说:/127.0.0.1,来了老弟 + + } + +} diff --git a/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/UDPServer.java b/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/UDPServer.java new file mode 100644 index 0000000..acaaff5 --- /dev/null +++ b/Big_data_example/java_learning/src/main/java/com/markilue/java_learning/network/UDPServer.java @@ -0,0 +1,76 @@ +package com.markilue.java_learning.network; + +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetSocketAddress; +import java.net.SocketException; +import java.nio.charset.StandardCharsets; + +/** + *@BelongsProject: java_learning + *@BelongsPackage: com.markilue.java_learning.network + *@Author: dingjiawen + *@CreateTime: 2022-12-22 19:15 + *@Description: TODO UDP套接字通信 + *@Version: 1.0 + */ +public class UDPServer { + + public static void main(String[] args) throws IOException { + System.out.println("---接收方启动中---"); + //1.使用DatagramSocket指定端口 创建接收端 + DatagramSocket server = new DatagramSocket(8000); + //2.准备容器 封装成DatagramPacket包裹 + byte[] container = new byte[1024 * 60]; + DatagramPacket packet = new DatagramPacket(container, 0, container.length); + //3.阻塞式接受包裹receive(DatagramPacket p) + server.receive(packet); + //4.分析数据 byte[] getData() getLength() + byte[] data = packet.getData(); + int length = packet.getLength(); + //操作获取到的数据 + System.out.println(new String(data,0,length)); + //返回给客户端信息 + packet.setData("服务器收到了".getBytes()); + server.send(packet); + //5.释放资源 + server.close(); + + /* + ---接收方启动中--- + 客户端发送请求 + */ + } +} + + +class UDPClient{ + + public static void main(String[] args) throws IOException { + System.out.println("---发送方启动中---"); + //1.使用DatagramSocket指定端口 创建发送端 + DatagramSocket client = new DatagramSocket(8888); + //2.准备一定数据,并转为字节数组 + String data="客户端发送请求"; + byte[] datas = data.getBytes(); + //3.封装成DatagramPacket包裹,需要指定目的地 + //传入参数为 (数据集,数据初始位置即0,,数据长度,接收端对象(接收端地址,接收端端口)) + DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 8000)); + + //4.发送send(DatagramPacket p) + client.send(packet); + //接受服务器返回的消息 + client.receive(packet); + //操作获取到的数据 + System.out.println(new String(packet.getData(),0,packet.getLength())); + //5.释放资源 + client.close(); + + /* + ---发送方启动中--- + 服务器收到了 + */ + + } +}