UDP网络编程
1 流程
2 代码
服务端:
package cn.jingshan.udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* @author yuajings
* @desc UDP服务端
*/
public class UDPServer {
public static void main(String[] args) throws IOException {
//创建监听套接字
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true){
//创建接收数据包、接收数据
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
System.out.println("from client: " + sentence);
//回复
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inStr = br.readLine();
sendData = inStr.getBytes();
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
System.out.println("server: " + inStr);
}
//关闭套接字
//serverSocket.close();
}
}
客户端:
package cn.jingshan.udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* @author yuajings
* @desc UDP客户端
*/
public class UDPClient {
public static void main(String args[]) throws IOException {
//创建套接字
DatagramSocket clientSocket = new DatagramSocket();
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
while(true) {
//发送数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inStr = br.readLine();
sendData = inStr.getBytes();
InetAddress IPAddress = InetAddress.getByName("localhost");
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
System.out.println("client:" + inStr);
//接收数据
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
clientSocket.receive(receivePacket);
String receiveStr = new String(receivePacket.getData());
System.out.println("from server:" + receiveStr);
}
//关闭套接字
//clientSocket.close();
}
}