java使用UDP来进行客户端和服务器端通信的简单例子

1:客户端程序

viewplain

packagecom.pb.udp;

importjava.io.IOException;

importjava.net.DatagramPacket;

importjava.net.InetAddress;

importjava.net.UnknownHostException;

importjava.net.DatagramSocket;

/**

*使用Sender类来代表客户端程序,

*@authorccna_zhang

*

*/

publicclassSender{

publicstaticvoidmain(String[]args){

Stringmsg="Hello,World";

byte[]buf=msg.getBytes();

try{

InetAddressaddress=InetAddress.getByName("192.168.1.80");//服务器地址

intport=8080;//服务器的端口号

//创建发送方的数据报信息

DatagramPacketdataGramPacket=newDatagramPacket(buf,buf.length,address,port);

DatagramSocketsocket=newDatagramSocket();//创建套接字

socket.send(dataGramPacket);//通过套接字发送数据

//接收服务器反馈数据

byte[]backbuf=newbyte[1024];

DatagramPacketbackPacket=newDatagramPacket(backbuf,backbuf.length);

socket.receive(backPacket);//接收返回数据

StringbackMsg=newString(backbuf,0,backPacket.getLength());

System.out.println("服务器返回的数据为:"+backMsg);

socket.close();

}catch(UnknownHostExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

2:服务器端程序

viewplain

packagecom.pb.udp;

importjava.io.IOException;

importjava.net.DatagramPacket;

importjava.net.DatagramSocket;

importjava.net.InetAddress;

importjava.net.SocketAddress;

importjava.net.UnknownHostException;

/**

*服务器端程序

*@authorccna_zhang

*

*/

publicclassReceiver{

publicstaticvoidmain(String[]args){

try{

InetAddressaddress=InetAddress.getLocalHost();

intport=8080;

//创建DatagramSocket对象

DatagramSocketsocket=newDatagramSocket(port,address);

byte[]buf=newbyte[1024];//定义byte数组

DatagramPacketpacket=newDatagramPacket(buf,buf.length);//创建DatagramPacket对象

socket.receive(packet);//通过套接字接收数据

StringgetMsg=newString(buf,0,packet.getLength());

System.out.println("客户端发送的数据为:"+getMsg);

//从服务器返回给客户端数据

InetAddressclientAddress=packet.getAddress();//获得客户端的IP地址

intclientPort=packet.getPort();//获得客户端的端口号

SocketAddresssendAddress=packet.getSocketAddress();

Stringfeedback="Received";

byte[]backbuf=feedback.getBytes();

DatagramPacketsendPacket=newDatagramPacket(backbuf,backbuf.length,sendAddress);//封装返回给客户端的数据

socket.send(sendPacket);//通过套接字反馈服务器数据

socket.close();//关闭套接字

}catch(UnknownHostExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

3:程序运行结果

服务器端:

客户端发送的数据为:Hello,World

客户端:

服务器返回的数据为:Received

相关推荐