Java Socket网络编程实战:字符流打造TCP通信示例

本文将带领你使用Java编写一个简单的网络应用程序,利用字符流实现客户端和服务器之间的数据传输,并讲解网络编程中的核心概念,如Socket、TCP和UDP。

代码示例

**1. 服务器端代码:**javaimport java.io.;import java.net.;

public class NetworkProgrammingExample { public static void main(String[] args) { try { // 创建一个ServerSocket对象,监听指定端口号 ServerSocket serverSocket = new ServerSocket(1234); System.out.println('服务器已启动,等待客户端连接...');

        // 等待客户端连接            Socket socket = serverSocket.accept();            System.out.println('客户端已连接');

        // 获取输入流,用于接收客户端发送的数据            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));            // 获取输出流,用于向客户端发送数据            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

        // 读取客户端发送的数据            String message = reader.readLine();            System.out.println('接收到客户端的数据:' + message);

        // 向客户端发送数据            writer.println('Hello, Client!');

        // 关闭连接            reader.close();            writer.close();            socket.close();            serverSocket.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

这段代码创建了一个服务器,监听本地端口1234,等待客户端连接。一旦客户端连接成功,服务器将接收客户端发送的一条消息,并向客户端回复一条消息。

**2. 客户端代码:**javaimport java.io.;import java.net.;

public class NetworkClientExample { public static void main(String[] args) { try { // 创建一个Socket对象,连接到服务器的指定IP地址和端口号 Socket socket = new Socket('localhost', 1234);

        // 获取输入流,用于接收服务器发送的数据            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));            // 获取输出流,用于向服务器发送数据            PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

        // 向服务器发送数据            writer.println('Hello, Server!');

        // 读取服务器发送的数据            String message = reader.readLine();            System.out.println('接收到服务器的数据:' + message);

        // 关闭连接            reader.close();            writer.close();            socket.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

这段代码创建了一个客户端,连接到本机地址 'localhost' 的端口1234,也就是上面服务器监听的端口。客户端会向服务器发送一条消息,并接收服务器的回复。

核心概念解读

  • Socket (套接字): 网络通信的端点,可以理解为两个应用程序进行通信的连接点。* TCP (传输控制协议): 一种面向连接的、可靠的传输层协议,确保数据包按顺序、无差错地到达目标。* UDP (用户数据报协议): 一种无连接的、不可靠的传输层协议,数据包可能丢失或乱序,但效率较高。

总结

本文提供了一个简单的Java Socket网络编程示例,演示了如何使用字符流进行TCP通信。实际应用中,网络程序需要处理更复杂的逻辑和数据交互,但本文提供的代码和概念解释可以作为你学习网络编程的入门指南。

Java Socket网络编程实战:字符流打造TCP通信示例

原文地址: https://www.cveoy.top/t/topic/fOQE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录