当前位置:实例文章 » JAVA Web实例» [文章]网络编程Java Socket(UDP/TCP 套接字)

网络编程Java Socket(UDP/TCP 套接字)

发布人:shili8 发布时间:2025-01-09 23:21 阅读次数:0

**Java Socket 编程**

Java Socket 是 Java 中用于网络通信的 API,提供了 TCP 和 UDP 套接字的实现。Socket 是一个抽象概念,代表了一个连接到服务器或客户端的端口。

### TCP 套接字TCP(Transmission Control Protocol)是一种面向连接的协议,它保证数据在传输过程中不会丢失或重复,并且按照发送顺序接收。TCP 套接字是 Java 中最常用的网络通信方式。

#### TCP Socket 客户端示例

javaimport java.net.*;
import java.io.*;

public class TcpClient {
 public static void main(String[] args) throws UnknownHostException, IOException {
 // 创建一个 TCP Socket 对象,连接到服务器的8000 端口 Socket socket = new Socket("localhost",8000);

 // 获取输入流和输出流 InputStream in = socket.getInputStream();
 OutputStream out = socket.getOutputStream();

 // 发送数据给服务器 String data = "Hello, Server!";
 byte[] bytes = data.getBytes();
 out.write(bytes);

 // 接收服务器的回复 byte[] responseBytes = new byte[1024];
 int len = in.read(responseBytes);
 String response = new String(responseBytes,0, len);
 System.out.println("Server's Response: " + response);

 // 关闭 Socket 对象 socket.close();
 }
}


#### TCP Socket服务器示例
javaimport java.net.*;
import java.io.*;

public class TcpServer {
 public static void main(String[] args) throws IOException {
 // 创建一个 TCP ServerSocket 对象,监听8000 端口 ServerSocket server = new ServerSocket(8000);

 System.out.println("Server is running on port8000...");

 while (true) {
 // 等待客户端连接 Socket socket = server.accept();

 // 获取输入流和输出流 InputStream in = socket.getInputStream();
 OutputStream out = socket.getOutputStream();

 // 接收客户端的数据 byte[] bytes = new byte[1024];
 int len = in.read(bytes);
 String data = new String(bytes,0, len);

 System.out.println("Client's Message: " + data);

 // 回复客户端 String response = "Hello, Client!";
 byte[] responseBytes = response.getBytes();
 out.write(responseBytes);

 // 关闭 Socket 对象 socket.close();
 }
 }
}


### UDP 套接字UDP(User Datagram Protocol)是一种无连接的协议,它不保证数据在传输过程中不会丢失或重复,并且不按照发送顺序接收。UDP 套接字是 Java 中用于实时通信和广播的网络通信方式。

#### UDP Socket 客户端示例
javaimport java.net.*;
import java.io.*;

public class UdpClient {
 public static void main(String[] args) throws UnknownHostException, IOException {
 // 创建一个 UDP DatagramSocket 对象,连接到服务器的8000 端口 DatagramSocket socket = new DatagramSocket();

 // 获取输入流和输出流 byte[] data = "Hello, Server!".getBytes();
 DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"),8000);

 // 发送数据给服务器 socket.send(packet);

 // 接收服务器的回复 byte[] responseBytes = new byte[1024];
 DatagramPacket responsePacket = new DatagramPacket(responseBytes, responseBytes.length);
 socket.receive(responsePacket);

 String response = new String(responseBytes,0, responsePacket.getLength());
 System.out.println("Server's Response: " + response);

 // 关闭 Socket 对象 socket.close();
 }
}


#### UDP Socket服务器示例
javaimport java.net.*;
import java.io.*;

public class UdpServer {
 public static void main(String[] args) throws IOException {
 // 创建一个 UDP ServerSocket 对象,监听8000 端口 DatagramSocket server = new DatagramSocket(8000);

 System.out.println("Server is running on port8000...");

 while (true) {
 // 等待客户端连接 byte[] bytes = new byte[1024];
 DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
 server.receive(packet);

 String data = new String(bytes,0, packet.getLength());
 System.out.println("Client's Message: " + data);

 // 回复客户端 String response = "Hello, Client!";
 byte[] responseBytes = response.getBytes();
 DatagramPacket responsePacket = new DatagramPacket(responseBytes, responseBytes.length, InetAddress.getByName("localhost"),8000);
 server.send(responsePacket);

 // 关闭 Socket 对象 server.close();
 }
 }
}


### 总结Java Socket 是 Java 中用于网络通信的 API,提供了 TCP 和 UDP 套接字的实现。TCP 套接字是面向连接的协议,它保证数据在传输过程中不会丢失或重复,并且按照发送顺序接收。UDP 套接字是无连接的协议,它不保证数据在传输过程中不会丢失或重复,并且不按照发送顺序接收。Java Socket API 提供了客户端和服务器端的实现示例,方便开发者快速上手网络通信编程。

其他信息

其他资源

Top