java里面DatagramSocket的setReceiveBufferSize方法为什么没有效果?
文档说这是一个提示,提示底层接收缓冲区为指定的大小,udp的话,如果包大小超过了缓冲区大小会被丢弃,为什么测试一下没有效果,客户端发送缓冲区设置2048,发送一个1088字节的数据包,结果没有被丢弃
private int port=8888;
private DatagramSocket socket;
public EchoServer() throws IOException {
socket=new DatagramSocket(port); //与本地的一个固定端口绑定
socket.setReceiveBufferSize(512);
System.out.println(socket.getReceiveBufferSize());//修改成功512
System.out.println("服务器启动");
}
public String echo(String msg) {
return "echo:" + msg;
}
public void service() {
while (true) {
try {
DatagramPacket packet=new DatagramPacket(new byte[2048],2048);
socket.receive(packet); //接收来自任意一个EchoClient的数据报
String msg=new String(packet.getData(),0,packet.getLength());
System.out.println(packet.getAddress() + ":" +packet.getPort()
+">"+msg);
packet.setData(echo(msg).getBytes());
socket.send(packet); //给EchoClient回复一个数据报
}catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String args[])throws IOException {
new EchoServer().service();
}