Java网络编程之UDP通信例子

来源:互联网 发布:用指针给数组排序3个数 编辑:程序博客网 时间:2024/05/01 01:50

UDPServer.java

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * @description * @date:(2015-9-14 下午11:07:55) * @author Administrator * @version v1.0 * @since v1.0 * * Modified history * *    Modified date:   *    Modifier user:      *    description:  * * */public class UDPServer {public static void main(String[] args) throws IOException {//监听8986端口DatagramSocket server=new DatagramSocket(8986);byte[] recvBuf=new byte[1024];//DatagramPacket(byte[] buf, int length):将数据包中Length长的数据装进Buf数组,一般用来接收客户端发送的数据DatagramPacket recvpacket=new DatagramPacket(recvBuf, recvBuf.length);//receive方法是阻塞式的,知道收到客户端请求才会往下走//接收数据报文到recvpacket中server.receive(recvpacket);String recvStr=new String(recvpacket.getData(),0,recvpacket.getLength());System.out.println("receive from client:"+recvStr);int port=recvpacket.getPort();//发送端地址//发送端地址InetAddress addr=recvpacket.getAddress();//响应数据String response="hello! I'm Server";byte[] sendBuf=response.getBytes();//从sendBuf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口//,通常用来发送数据给客户端。DatagramPacket sendpacket=new DatagramPacket(sendBuf, sendBuf.length,addr,port);//发送报文sendpacket到目的地server.send(sendpacket);server.close();}}

Client.java

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/** * @description * @date:(2015-9-14 下午11:17:12) * @author Administrator * @version v1.0 * @since v1.0 * * Modified history * *    Modified date:   *    Modifier user:      *    description:  * * */public class Client {public static void main(String[] args) throws IOException {DatagramSocket client=new DatagramSocket();String sendStr="Hello! I'm client";byte[] sendBuf=sendStr.getBytes();InetAddress addr=InetAddress.getByName("127.0.0.1");int port=8986;//从Buf数组中,取出Length长的数据创建数据包对象,目标是clientAddress地址,clientPort端口,通常用来发送数据DatagramPacket sendpacket=new DatagramPacket(sendBuf, sendBuf.length, addr, port);//发送报文sendpacket到目的地client.send(sendpacket);byte[] recvBuf=new byte[1024];DatagramPacket recvPacket=new DatagramPacket(recvBuf,recvBuf.length);//接收数据报文到recvpacket中client.receive(recvPacket);String recvStr=new String(recvPacket.getData(),0,recvPacket.getLength());System.out.println("receive from server:"+recvStr);client.close();}}


0 0
原创粉丝点击