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 实现_客户咨询的主要内容,如果未能解决你的问题,请参考以下文章

网络编程之UDP编程

DatagramSocket(UDP协议)

Java网络编程-第三节:UDP数据报套接字(DatagramSocket)编程

Java网络编程-第三节:UDP数据报套接字(DatagramSocket)编程

UDP网络编程

java网络原理《狂神说》实现UDP双方通信(含代码)