网络编程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 提供了客户端和服务器端的实现示例,方便开发者快速上手网络通信编程。

