进阶day11-网络编程_UDP的服务端实现
This commit is contained in:
48
javaSE-day11/src/com/inmind/udp02/UdpServerDemo03.java
Normal file
48
javaSE-day11/src/com/inmind/udp02/UdpServerDemo03.java
Normal file
@@ -0,0 +1,48 @@
|
||||
package com.inmind.udp02;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.DatagramSocket;
|
||||
import java.net.SocketException;
|
||||
|
||||
/*
|
||||
作为UDP服务端,接收客户端发送的数据
|
||||
|
||||
在java中使用DatagramSocket来表示UDP的客户端和服务端
|
||||
构造方法
|
||||
DatagramSocket(int port) 创建服务端的Socket对象,并指定端口号。
|
||||
|
||||
常用方法:
|
||||
void receive(DatagramPacket p) 使用数据包接收数据
|
||||
|
||||
DatagramPacket :数据包
|
||||
DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
|
||||
int getLength() 返回要发送的数据的长度或接收到的数据的长度
|
||||
|
||||
需求:创建服务器,接收客户端的数据
|
||||
*/
|
||||
public class UdpServerDemo03 {
|
||||
public static void main(String[] args) throws IOException {
|
||||
System.out.println("服务器启动了");
|
||||
//1.创建服务器端对象
|
||||
DatagramSocket server = new DatagramSocket(10022);
|
||||
|
||||
//2.创建出一个数据包对象,用来接收数据(接飞饼)
|
||||
//DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象
|
||||
byte[] buf = new byte[1024 * 64];//用来接收数据,最大64KB
|
||||
DatagramPacket packet = new DatagramPacket(buf, buf.length);
|
||||
|
||||
//3.服务器开始正式使用数据包,接收客户端发来的数据
|
||||
server.receive(packet);//阻塞方法
|
||||
|
||||
//4.从数据包中获取字节数据,并展示(接收多少个字节,就打印多少数据)
|
||||
int length = packet.getLength();//数据的长度
|
||||
//字节数据转为字符串展示
|
||||
String result = new String(buf, 0, length);
|
||||
//获取数据包的ip和端口
|
||||
System.out.println(packet.getPort());
|
||||
System.out.println(packet.getAddress().getHostAddress());
|
||||
System.out.println(result);
|
||||
server.close();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user