Java网络编程函数:创建TCP/UDP客户端、服务端的实现
Java网络编程函数可以实现创建TCP/UDP客户端和服务端的功能。下面将分别介绍这两种实现方式。
1. 创建TCP客户端的实现函数:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws Exception {
String serverIP = "localhost";
int serverPort = 9999;
Socket clientSocket = new Socket(serverIP, serverPort);
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream, true);
// 发送数据给服务端
out.println("Hello Server");
InputStream inputStream = clientSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
// 接收服务端返回的数据
String response = in.readLine();
System.out.println("Server response: " + response);
// 关闭连接
clientSocket.close();
}
}
上述代码中,首先创建了一个Socket对象来与服务端建立连接。然后通过获取Socket对象的输出流和输入流,分别创建了一个PrintWriter和一个BufferedReader对象,用于向服务端发送数据和接收服务端的返回数据。最后,关闭连接。
2. 创建TCP服务端的实现函数:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception {
int serverPort = 9999;
ServerSocket serverSocket = new ServerSocket(serverPort);
System.out.println("Server is running and waiting for client connection...");
Socket clientSocket = serverSocket.accept();
InputStream inputStream = clientSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
// 接收客户端发送的数据
String request = in.readLine();
System.out.println("Client request: " + request);
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream, true);
// 发送数据给客户端
out.println("Hello Client");
// 关闭连接
clientSocket.close();
serverSocket.close();
}
}
上述代码中,首先创建了一个ServerSocket对象来监听特定的端口,等待客户端连接。当有客户端连接时,通过ServerSocket的accept()方法获取到客户端的Socket对象。然后通过获取Socket对象的输入流和输出流,分别创建了一个BufferedReader和一个PrintWriter对象,用于接收客户端发送的数据和向客户端发送数据。最后,关闭连接。
3. 创建UDP客户端的实现函数:
import java.io.*;
import java.net.*;
public class UDPClient {
public static void main(String[] args) throws IOException {
String serverIP = "localhost";
int serverPort = 9999;
DatagramSocket clientSocket = new DatagramSocket();
// 发送数据给服务端
String message = "Hello Server";
InetAddress serverAddress = InetAddress.getByName(serverIP);
byte[] sendData = message.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverAddress, serverPort);
clientSocket.send(sendPacket);
// 接收服务端返回的数据
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String response = new String(receivePacket.getData());
System.out.println("Server response: " + response);
// 关闭连接
clientSocket.close();
}
}
上述代码中,首先创建了一个DatagramSocket对象。然后通过将数据封装成DatagramPacket对象,指定了服务端的IP地址和端口号,使用DatagramSocket的send()方法向服务端发送数据。接收服务端返回的数据也是通过创建一个DatagramPacket对象,使用DatagramSocket的receive()方法接收数据。最后,关闭连接。
4. 创建UDP服务端的实现函数:
import java.io.*;
import java.net.*;
public class UDPServer {
public static void main(String[] args) throws IOException {
int serverPort = 9999;
DatagramSocket serverSocket = new DatagramSocket(serverPort);
System.out.println("Server is running and waiting for client request...");
// 接收客户端发送的数据
byte[] receiveData = new byte[1024];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String request = new String(receivePacket.getData());
System.out.println("Client request: " + request);
// 发送数据给客户端
String message = "Hello Client";
InetAddress clientAddress = receivePacket.getAddress();
int clientPort = receivePacket.getPort();
byte[] sendData = message.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, clientAddress, clientPort);
serverSocket.send(sendPacket);
// 关闭连接
serverSocket.close();
}
}
上述代码中,首先创建了一个DatagramSocket对象来监听特定的端口,等待客户端的请求。当有客户端请求时,通过创建一个DatagramPacket对象,使用DatagramSocket的receive()方法接收数据。然后通过获取DatagramPacket对象的地址和端口号,创建了一个新的DatagramPacket对象,使用DatagramSocket的send()方法向客户端发送数据。最后,关闭连接。
以上就是Java网络编程函数中创建TCP/UDP客户端和服务端的实现方式。
