您的位置:首页 > 理论基础 > 计算机网络

Java网络编程之UDP通信例子

2015-09-15 22:26 726 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: