UDP通信_ DatagramSocket 实现_客户咨询
Posted lujunlong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UDP通信_ DatagramSocket 实现_客户咨询相关的知识,希望对你有一定的参考价值。
1)不需要利用IO流实现数据的传输
2)每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地。
3) DatagramSocket: 用于发送或接收数据包
4) DatagramPacket:数据包
示例代码:
package UDPProject;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) throws IOException {
/*
* 一次双向通信:
* 一发、一收
*/
System.out.println("----咨询者----");
//创建datagramsocket对象
Scanner input = new Scanner(System.in);
DatagramSocket ds = new DatagramSocket(8888);
//准备要发送的数据
while(true) {
String s = input.next();
byte[] buf = s.getBytes();
//创建数据包对象
//发送的数据、发送多少、发到哪台主机、主机程序使用的端口
DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("localhost"),9999);
//发送
ds.send(dp);
//接受
byte[] buf2 = new byte[1024];
DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length);
ds.receive(dp2);
String str = new String(dp2.getData(),0,dp2.getLength());
System.out.println("客服说:"+str);
if ("bye".equals(s)) {
break;
}
}
ds.close();
}
}
package UDPProject;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) throws IOException {
/*
* 接收方:
* 一收、一发
*/
System.out.println("-----客服人员-----");
DatagramSocket ds = new DatagramSocket(9999);
//准备接收数据
Scanner input = new Scanner(System.in);
while(true) {
byte[] buf = new byte[1024];
//准备数据包接收
DatagramPacket dp = new DatagramPacket(buf, buf.length);
//接受
ds.receive(dp);
//查看接收到的数据
String str = new String(dp.getData(),0,dp.getLength());
System.out.println("客户说:"+str);
//回复数据
String s = input.next();
byte[] buf2 = s.getBytes();
DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length,dp.getAddress(),dp.getPort());
ds.send(dp2);
if (s.equals("bye")) {
break;
}
}
ds.close();
}
}
以上是关于UDP通信_ DatagramSocket 实现_客户咨询的主要内容,如果未能解决你的问题,请参考以下文章
Java网络编程-第三节:UDP数据报套接字(DatagramSocket)编程