您的位置:首页 > 编程语言 > Java开发

Java(使用无连接的UDP方式通信)

2014-04-08 22:20 274 查看
数据报是网上传输的独立数据包,数据报是否能正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。

Java中使用Datagram与DatagramPacket类

DatagramSocket类利用UDP协议来实现客户与服务器的Socket

send()方法用于发送数据报

receive()方法接收数据报

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Server {
public static void main(String[] args) throws Exception {
DatagramSocket datagramSocket = new DatagramSocket(5678);
// 服务端收到数据报后会放到DatagramPacket中
byte[] buffer = new byte[100];
DatagramPacket datagramPacket = new DatagramPacket(buffer, 100);
// 接收数据报,放到datagramPacket中去
datagramSocket.receive(datagramPacket);
// 接收到的数据内容
byte[] data = datagramPacket.getData();
System.out.println("receive from client : "
+ new String(data, 0, datagramPacket.getLength()));

// 客户端地址
InetAddress address = datagramPacket.getAddress();
// 客户端端口
int port = datagramPacket.getPort();
//获取字符内容长度,准备返回给客户端
int strLength = datagramPacket.getLength();
//构建返回的数据报
DatagramPacket datagramPacket2 = new DatagramPacket(String.valueOf(
strLength).getBytes(), String.valueOf(strLength).length(),
address, port);
//发送回客户端
datagramSocket.send(datagramPacket2);

datagramSocket.close();
}
}


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Client {
public static void main(String[] args) throws Exception {

DatagramSocket datagramSocket = new DatagramSocket();

String content = "hello world";
InetAddress address = InetAddress.getByName("localhost");

DatagramPacket datagramPacket = new DatagramPacket(content.getBytes(),
content.length(), address, 5678);
//将构建好的数据报发送到服务端
datagramSocket.send(datagramPacket);

//接收服务端返回的内容到datagramPacket2
byte[] buffer = new byte[100];
DatagramPacket datagramPacket2 = new DatagramPacket(buffer, 100);
datagramSocket.receive(datagramPacket2);

// 输出接收到的数据内容
byte[] data = datagramPacket2.getData();
System.out.println("receive from server : "
+ new String(data, 0, datagramPacket2.getLength()));

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