s-day11-UDP的服户端实现&测试
This commit is contained in:
@@ -25,7 +25,7 @@ DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
|
|||||||
int getLength() 返回要发送的数据的长度或接收到的数据的长度
|
int getLength() 返回要发送的数据的长度或接收到的数据的长度
|
||||||
|
|
||||||
需求:使用UDP实现快速通信,实现1发1收
|
需求:使用UDP实现快速通信,实现1发1收
|
||||||
|
客户端的实现
|
||||||
*/
|
*/
|
||||||
public class Demo02 {
|
public class Demo02 {
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
@@ -34,7 +34,9 @@ public class Demo02 {
|
|||||||
|
|
||||||
//2.创建数据包对象,封装要发出去的数据(创建一个飞饼)
|
//2.创建数据包对象,封装要发出去的数据(创建一个飞饼)
|
||||||
byte[] bytes = "我爱java,java爱我".getBytes();
|
byte[] bytes = "我爱java,java爱我".getBytes();
|
||||||
DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022);
|
// DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022);
|
||||||
|
DatagramPacket packet = new DatagramPacket(bytes,bytes.length,
|
||||||
|
InetAddress.getByName("192.168.23.174"),10022);
|
||||||
//3.客户端正式发送这个数据包出去
|
//3.客户端正式发送这个数据包出去
|
||||||
socket.send(packet);
|
socket.send(packet);
|
||||||
System.out.println("客户端数据发送完毕~~");
|
System.out.println("客户端数据发送完毕~~");
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.inmind.udp02;
|
||||||
|
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
|
||||||
|
/*
|
||||||
|
作为UDP服务端,接收客户端发送的数据
|
||||||
|
|
||||||
|
在java中使用DatagramSocket来表示UDP的客户端和服务端
|
||||||
|
构造方法
|
||||||
|
DatagramSocket(int port) 创建服务端的Socket对象,并指定端口号。
|
||||||
|
|
||||||
|
常用方法:
|
||||||
|
void receive(DatagramPacket p) 使用数据包接收数据
|
||||||
|
|
||||||
|
DatagramPacket :数据包
|
||||||
|
DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
|
||||||
|
int getLength() 返回要发送的数据的长度或接收到的数据的长度
|
||||||
|
|
||||||
|
需求:创建服务器,接收客户端的数据
|
||||||
|
*/
|
||||||
|
public class Demo03 {
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
System.out.println("服务端启动了.....");
|
||||||
|
//1.创建服务端的对象(并指定端口号)
|
||||||
|
DatagramSocket socket = new DatagramSocket(10022);
|
||||||
|
//2.创建出一个数据包对象,用于接收数据(飞饼)
|
||||||
|
byte[] bytes = new byte[64 * 1024];//64KB
|
||||||
|
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
|
||||||
|
|
||||||
|
//3.服务器开始正式使用数据包,接收客户端的数据
|
||||||
|
socket.receive(packet);//阻塞方法,等待客户端发送的数据
|
||||||
|
//4.获取数据包的ip地址,和端口号
|
||||||
|
int length = packet.getLength();//获取数据包中字节数据的长度
|
||||||
|
String result = new String(bytes, 0, length);
|
||||||
|
System.out.println(packet.getPort());//获取数据包的端口
|
||||||
|
System.out.println(packet.getAddress().getHostAddress());//获取数据包的IP地址
|
||||||
|
System.out.println(result);
|
||||||
|
socket.close();//服务器资源释放
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user