时间:2019-10-08
概述:UDP discard 服务端
Java实现基于UDP 的discard 服务器端,基于 UDP 的discard 服务器端可以接收从客户端发送过来的数据包。本例通过编程实现了基于UDP 协议的discard 服务器端,为显示结果和发送的用户,本例通过System.out 显示了发送者和具体数据。运行程序,即可启动discard 服务器端:
实现方法:
在 main()方法中,从命令行中获得需要监听的端口,如果端口在命令行中没有特别指定,默认为9。在此端口上打开一个DatagramSocket 对象,创建一个带有65507 字节存储大小的DatagramPacket对象。通过一个无限循环获取各个服务器端发送过来的数据,并将此数据在控制台上显示出来。程序代码:
1.编写useUDPDiscardServer 类的基本框架,该类包括保存缺省端口的整型常量defaultport和保存包最大范围的整型常量maxpacketsize,该类还包括main()方法,在该方法中实现基于UDP 的discard 服务器端。
2.编写useUDPDiscardServer 类,代码如下:
import java.net.*;
import java.io.*;
public class useUDPDiscardServer
{
//设置常量
public final static int defaultport = 9;
public final static int maxpacketsize = 65507;
//主程序
public static void main(String[] args)
{
int port = defaultport;
byte[] buffer = new byte[maxpacketsize];
try
{
//获取端口
port = Integer.parseInt(args[0]);
}
catch (Exception e)
{
System.err.println("1");
}
try
{
//新建DatagramSocket对象
DatagramSocket server = new DatagramSocket(port);
//新建DatagramPacket对象
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
//无限循环
while (true)
{
try
{
server.receive(packet);
String s = new String(packet.getData(), 0, packet.getLength());
System.out.println(packet.getAddress() + " at port "
+ packet.getPort() + " says " + s);
//重新设置下一个包的长度
packet.setLength(buffer.length);
}
catch (IOException e)
{
System.err.println("2");
}
}
}
catch (SocketException se)
{
System.err.println("3");
}
}
}