1、TCP 和 UDP 端口是相互独立的。也就是说,可以在端口 8080 同时运行一个 TCP 和 UDP 服务程序,两者之间不会产生冲突。
P.547
//: Dgram.java
// A utility class to convert back and forth
// Between Strings and DataGramPackets.
import java.net.*;
public class Dgram {
public static DatagramPacket toDatagram(
String s, InetAddress destIA, int destPort) {
// Deprecated in Java 1.1, but it works:
byte[] buf = new byte[s.length() + 1];
s.getBytes(0, s.length(), buf, 0);
// The correct Java 1.1 approach, but it's
// Broken (it truncates the String):
// byte[] buf = s.getBytes();
return new DatagramPacket(buf, buf.length,
destIA, destPort);
}
public static String toString(DatagramPacket p){
// The Java 1.0 approach:
// return new String(p.getData(),
// 0, 0, p.getLength());
// The Java 1.1 approach:
return
new String(p.getData(), 0, p.getLength());
}
} ///:~
2、Dgram 的第一个方法采用一个 String、一个 InetAddress 以及一个端口号作为自己的参数,将 String 的内容复制到一个字节缓冲区,再将缓冲区传递进入 DatagramPacket 构建器,从而构建一个 DatagramPacket。注意缓冲区分配时的"+1"—— 这对防止截尾现象是非常重要的。
P.548
注意以上这两点!
标签:UDP,DatagramPacket,Java,String,--,return,new,buf From: https://blog.51cto.com/u_16183536/9231692