一 .源代码
/*服务器端*/
import java.util.*;
import java.net.*;
import java.io.*;
public class UDPServer {
private final static int PORT=3000;
public static void main(String[] args) {
// TODO code application logic here
try{
DatagramSocket socket=new DatagramSocket(PORT);
while(true)
{
try{
DatagramPacket hasRecv=new DatagramPacket(new byte[10],10);
socket.receive(hasRecv);
String str=new String(hasRecv.getData(),0,hasRecv.getLength(),"ASCII");
System.out.println("has recv:"+str);
byte[]data="ACK".getBytes();
DatagramPacket toSend=new DatagramPacket(data,data.length,hasRecv.getAddress(),hasRecv.getPort());
socket.send(toSend);
}
catch(IOException ex)
{
System.err.println(ex);
}
}
}
catch(IOException ex)
{
System.err.println(ex);
}
}
}
/*客户端*/
import java.net.*;
import java.util.*;
import java.io.*;
/**
*
* @author liuzhenzhao
*/
public class UDPClient {
/**
* @param args the command line arguments
*/
private final static int PORT=3000;//服务器的端口号
private final static String IP="192.168.108.130";///服务器的ip地址
public static void main(String[] args) {
// TODO code application logic here
try{
DatagramSocket socket=new DatagramSocket(0);//指定0让操作系统指定一个端口号
socket.setSoTimeout(10000);//定义超时时间
InetAddress ip=InetAddress.getByName(IP);
byte []sendbuff="hello".getBytes();
System.out.println(sendbuff.length);
DatagramPacket send=new DatagramPacket(sendbuff,sendbuff.length,ip,PORT);//用于发送的包
DatagramPacket recv=new DatagramPacket(new byte[10],10);//用于接收的包
socket.send(send);
socket.receive(recv);
String res=new String(recv.getData(),0,recv.getLength(),"ASCII");
System.out.println("has recv:"+res);
}
catch(IOException ex)
{
System.err.println(ex);
}
}
}
二.运行结果
运行结果如下:
1.客户端
2.服务器端
三.说明:
服务器端运行在linux虚拟机上,客户端运行在windows上