很多服务会监视垃圾邮件发送者(spammer),并告诉客户端,试图与之连接的主机是否是一个已知的垃圾邮件发送者
要查看一个地址是否是一个已知的垃圾邮件发送者,可以逆置这个地址的字节,增加黑洞服务的域,然后查找这个地址,如果这个地址被找到,说明它是一个已知的垃圾邮件发送者,如果抛出UnknownHostException,这就说明它不是。
package internet;
import java.net.*;
public class SpamCheck {
public static final String BLACKHOLE = "sbl.spamhaus.org";
public static void main(String[] args) {
for (String arg : args) {
if (isSpammer(arg)) {
System.out.println(arg + "是已知的垃圾邮件发送者");
}else {
System.out.println(arg + "是已知的合法邮件发送者");
}
}
}
private static boolean isSpammer(String str) {
try {
InetAddress address = InetAddress.getByName(str);
byte[] quad = address.getAddress();// 获取主机的IP地址
String query = BLACKHOLE;// 黑洞列表
// 逆置这个地址的字节,增加黑洞服务的域
for (byte octet : quad) {
int unsignedByte = octet < 0 ? octet +256 : octet;
query = unsignedByte + "." + query;
}
// 然后查找这个地址
InetAddress.getByName(query);
return true;
} catch (UnknownHostException e) {
return false;
}
}
}