导航菜单

Java 编程/网络编程
课程进度 85% · 第9/10章9/10章 · 标签 1/2
1

TCP 通信

Socket 是实现网络通信的基础。Java 提供了 ServerSocket 和 Socket 类简化 TCP 编程。

java
1
// 服务器
2
ServerSocket server = new ServerSocket(8080);
3
System.out.println("等待客户端连接...");
4
 
5
Socket client = server.accept();
6
BufferedReader in = new BufferedReader(
7
new InputStreamReader(client.getInputStream()));
8
PrintWriter out = new PrintWriter(
9
client.getOutputStream(), true);
10
 
11
String msg = in.readLine();
12
System.out.println("收到: " + msg);
13
out.println("已收到: " + msg);
14
 
15
client.close();
16
server.close();
17
 
18
// 客户端
19
Socket socket = new Socket("localhost", 8080);
20
PrintWriter out = new PrintWriter(
21
socket.getOutputStream(), true);
22
BufferedReader in = new BufferedReader(
23
new InputStreamReader(socket.getInputStream()));
24
 
25
out.println("Hello Server");
26
System.out.println(in.readLine());
27
 
28
socket.close();
2

UDP 通信

java
1
// UDP 服务器
2
DatagramSocket server = new DatagramSocket(9090);
3
byte[] buf = new byte[1024];
4
DatagramPacket packet = new DatagramPacket(buf, buf.length);
5
server.receive(packet);
6
String msg = new String(packet.getData(), 0, packet.getLength());
7
System.out.println("收到: " + msg);
8
 
9
InetAddress addr = packet.getAddress();
10
int port = packet.getPort();
11
byte[] resp = "ACK".getBytes();
12
server.send(new DatagramPacket(resp, resp.length, addr, port));
13
server.close();
14
 
15
// UDP 客户端
16
DatagramSocket client = new DatagramSocket();
17
byte[] data = "Hello".getBytes();
18
client.send(new DatagramPacket(data, data.length,
19
InetAddress.getByName("localhost"), 9090));
20
 
21
byte[] buf2 = new byte[1024];
22
DatagramPacket resp2 = new DatagramPacket(buf2, buf2.length);
23
client.receive(resp2);
24
System.out.println(new String(resp2.getData(), 0, resp2.getLength()));
25
client.close();