TCP和UDP的java模拟代码,模拟三次握手
`import java.net.;
import java.io.;
public class Main {
public static void main(String[] args) {
try {
// TCP连接模拟
ServerSocket serverSocket = new ServerSocket(8080);
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// UDP 连接模拟
DatagramSocket datagramSocket = new DatagramSocket(8081);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
datagramSocket.receive(receivePacket);
String message = new String(receivePacket.getData());
System.out.println("Received message: " + message);
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
String response = "Server received message: " + message;
sendData = response.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
datagramSocket.send(sendPacket);
// 三次握手
String inputLine;
inputLine = in.readLine();
System.out.println("Received SYN: " + inputLine);
out.println("SYN-ACK");
inputLine = in.readLine();
System.out.println("Received ACK: " + inputLine);
// 数据效验
while ((inputLine = in.readLine()) != null) {
System.out.println("Received message: " + inputLine);
out.println("Server received message: " + inputLine);
}
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
System.out.println("Exception caught when trying to listen on port or listening for a connection");
System.out.println(e.getMessage());
}
}
}`

浙公网安备 33010602011771号