- 浏览: 67034 次
- 性别:
- 来自: 广州
最新评论
-
sanshizi:
...
Java查询MX记录 -
archangelwin:
...
php效率优化 -
fcoffee:
是啊是啊, ipv9才是下一代~~~
清华大学教授吴建平:IPv6并非下一代互联网 -
penghao122:
写一个php边接sqlserver的例子给我看看
php效率优化
package org.cnhawk;
import org.xbill.DNS.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.*;
public class LookDNSMX{
private Resolver resolver;
private Cache cache;
private int DNSCredibility;
private static LookDNSMX instance=null;
private Collection DNSServers = new Vector();
//构造函数
public LookDNSMX() throws Exception{
this.initialize();
}
public static LookDNSMX getInstance() throws Exception{
if(instance==null)
instance=new LookDNSMX();
return instance;
}
//初始化
public void initialize() throws Exception {
DNSServers.add("10.0.1.1");
final String serversArray[] = (String[])DNSServers.toArray(new String[0]);
System.out.println("Current DNS server is : "+serversArray[0].toString());
try {
resolver = new ExtendedResolver(serversArray );
} catch (UnknownHostException uhe) {
throw uhe;
}
cache = new Cache (DClass.IN);
}
//主方法
public synchronized Collection findMXRecords(String hostname)throws Exception {
Record DNSAnswers[] =null;
Collection MXServers = new Vector();
//调用查看DNS的记录的方法,返回一个Record记录数组
DNSAnswers=this.rawDNSLookup(hostname,false,Type.MX);
if (DNSAnswers == null) {
MXServers.add(hostname);
System.out.println(hostname+" MX result is "+hostname+"\r");
return MXServers;
}
MXRecord MXAnswers[] = new MXRecord[DNSAnswers.length];
for (int i = 0; i < DNSAnswers.length; i++) {
MXAnswers[i] = (MXRecord)DNSAnswers[i];
}
Comparator prioritySort = new Comparator () {
public int compare (Object a, Object b) {
MXRecord ma = (MXRecord)a;
MXRecord mb = (MXRecord)b;
return ma.getPriority () - mb.getPriority ();
}
};
Arrays.sort(MXAnswers, prioritySort);
System.out.println("\n\n"+hostname+ " MX result is: ");
String mxstr="";
for (int i = 0; i < MXAnswers.length; i++) {
mxstr=MXAnswers[i].getTarget ().toString ().trim();
MXServers.add(mxstr.substring(0,mxstr.length()-1));
}
//System.out.println(hostname+ " MX result is \n"+mxstr);
return MXServers;
}
/**
* 根据给定的类型和主机名去查看DNS的记录
* 返回一个Record记录数组
*
* @param hostname 被查看的主机名
* @param querysent 这个查询是否已经被发送到DNS 服务器了
* @param type 是要得到的记录类型
*/
private Record[] rawDNSLookup(String hostname, boolean querysent, int type) {
try{
Name name = Name.fromString(hostname, Name.root);
short dclass = DClass.IN;
Record [] DNSAnswers=null;
SetResponse ResponseCached = cache.lookupRecords(name, type, DNSCredibility);
if (ResponseCached.isSuccessful()) {
return getDNSAnswers(ResponseCached);
}
else if (ResponseCached.isNXDOMAIN() || ResponseCached.isNXRRSET() || querysent) {
return null;
}
else
{
Record question = Record.newRecord(name, type, dclass);
org.xbill.DNS.Message query = org.xbill.DNS.Message.newQuery(question);
org.xbill.DNS.Message DNSresponse;
try {
DNSresponse = resolver.send(query);
}catch (Throwable e) {
e.printStackTrace();
return null;
}
int rcode = DNSresponse.getHeader().getRcode();
if (rcode == Rcode.NOERROR || rcode == Rcode.NXDOMAIN) {
ResponseCached = cache.addMessage(DNSresponse);
return getDNSAnswers(ResponseCached);
}
if (rcode != Rcode.NOERROR) {
return null;
}
}
return DNSAnswers;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
private Record[] getDNSAnswers(SetResponse responseCached)
{
Record [] DNSAnswers=null;
try
{
int answerCount = 0;
int n = 0;
RRset [] rrsets = responseCached.answers();
for (int i = 0; i < rrsets.length; i++) {
answerCount += rrsets[i].size();
}
DNSAnswers = new Record[answerCount];
Iterator itor = null;
for (int i = 0; i < rrsets.length; i++) {
itor = rrsets[i].rrs();
while (itor.hasNext()) {
DNSAnswers[n++]= (Record)itor.next();
}
}
}catch (Exception e){
e.printStackTrace();
return null;
}
return DNSAnswers;
}
//测试方法
public static void main(String args[]){
try{
LookDNSMX client= new LookDNSMX();
Collection col=client.findMXRecords("sina.com");
Iterator it=col.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
col=client.findMXRecords("handuancn.com");
it=col.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
发表评论
-
别了,珠海!
2007-09-03 17:16 1093别了,珠海! 在一个地方待久了,自然就会有感情。故事从2005 ... -
Tomrrow is another day
2007-08-19 12:42 1203今天,七夕。 Tomrrow is another day! -
也谈投资
2007-07-27 06:41 1125有这样一支股票,你为她付出了很多很多,几乎倾注了自己的所有心血 ... -
辞职了,好好休息下
2007-07-23 14:16 1340经过几天的工作交接,明天就要正式辞职了。 辞职才知道自己似乎真 ... -
你想参加7月19日CCTV4《名将之约》的节目录制吗?
2007-07-13 15:45 1340你想参加7月19日CCTV4《名将之约》韩端的节目录制吗? 今 ... -
下辈子做我女朋友好吗
2007-07-06 18:10 1268秋风无情,流水无心。落叶似血滴在心里化为尘土。心因饱经忧伤而 ... -
再读周国平
2007-06-24 15:36 1168不记得是什么时候开始就喜欢上周国平的散文,却是一种一见钟情的喜 ... -
最近心脏好痛!
2007-06-16 18:27 1345最近心脏好痛! 或许是天生的心脏问题,我和弟弟都有心脏剧痛的经 ... -
祝福天下母亲母亲节快乐!
2007-05-13 15:56 1059今天是母亲节。 下午给外婆、奶奶和自己家里分别打了个电话。 外 ... -
[转]有一种情感.....
2007-05-06 06:06 971人活这一辈子,总会碰到几个特别的人,这类人可能只是你纯 ... -
你的春天来了吗?
2007-04-30 18:34 960今天,登录博客,忽然发现博客的随机提示语:“你的春天来了吗?” ... -
正则表达式 开源
2007-04-20 14:58 1612其实这是两个根本不相关的话题,一个是几天在公司遇到的正则表达式 ... -
珍惜每一天---它们都很特别
2007-04-16 16:04 1185好好想想....... “Think it ... -
Google全球化 VS 谷歌本地化
2007-04-08 10:48 3064全球化在我看来,就是 ... -
熊猫走了,灰鸽子死了
2007-03-25 06:52 12302007年开始几个月,对于 ... -
DecodeBase64
2007-03-19 05:21 2251package org.cnhawk.tools;/* *Da ... -
醉了,醒了,飞了。。。。
2007-03-19 11:41 900原来醉了,会醒; 原来醒来,比醉更难受; 宁愿一醉不醒,一醉不 ... -
宫廷贺岁之香妃传奇
2007-02-19 09:22 1009由于观看、拍照位置、光线不佳,照片质量并不太好。撮合吧。。。 ... -
宫廷自然、人文景观
2007-02-19 09:27 873... -
潦
2007-02-24 04:31 819潦 寂空鹰独哀, 孤山虎自哮, 棘路人难行, 沧海粟何寄? ...
相关推荐
Internet邮件MX记录介绍Internet邮件MX记录介绍Internet邮件MX记录介绍
这些库提供了丰富的API来处理各种DNS查询类型,包括A记录(IP地址)、MX记录(邮件服务器)、CNAME记录(别名)等。 例如,使用`dnsjava`库解析域名的MX记录: ```java import org.xbill.DNS.*; public class ...
1. **查询IP地址**:使用`Resolver`进行A记录查询,获取指定域名的IP地址。 ```java Resolver resolver = new SimpleResolver("8.8.8.8"); // 使用Google DNS服务器 Record[] records = resolver.query(Name.from...
4. **.txt文件**:TXT文件是一种纯文本格式,可能包含MX Player的使用指南、修改记录、开发者日志或者用户反馈等信息,方便用户了解软件的细节或解决问题。 5. **ZIP压缩文件**:ZIP是一种常见的文件压缩格式,用于...
2. DNS查询类型:如A记录(IPv4地址)、AAAA记录(IPv6地址)、MX记录(邮件服务器)、CNAME记录(别名)等。 3. Java网络编程:使用Java的Socket、DatagramPacket和InetAddress等类实现网络通信,与DNS服务器交互...
3. **MX记录验证**:JEmval不仅检查邮箱地址的格式,还会通过查询DNS的MX(邮件交换)记录来验证该地址是否实际存在于某个邮件服务器上。这一步可以防止因不存在的邮件服务器导致的邮件发送失败。 4. **SMTP验证**...
通过使用正则表达式验证基本格式,再结合DNS查询验证MX记录,可以更全面地验证电子邮件地址的有效性。不过,考虑到性能和隐私问题,实际应用中可能只在必要时(如用户注册时)进行MX记录的验证。
- `update.java`:可能包含DNS动态更新协议的实现,允许修改DNS记录,如A、MX、CNAME等。 2. **辅助文件**: - `Changelog`:记录了项目的变更历史,对于理解代码的演化和修复的bug有帮助。 - `examples.html`:...
`domainName.java`可能包含对域名处理的逻辑,例如验证域名的有效性或解析MX记录以找到邮件服务器。这在确定邮件服务器地址时非常有用。 总结一下,Java实现ESMTP邮件发送涉及的关键步骤包括:配置SMTP服务器信息、...
2. **DNS查询类型**:A记录(IP地址)、MX记录(邮件交换器)、CNAME记录(别名)、NS记录(名称服务器)等,以及如何在JAVA代码中处理这些查询。 3. **JAVA网络编程**:使用JAVA的Socket和ServerSocket类进行TCP/...
- **域名解析**:Eagle DNS能够处理各种类型的DNS查询,如A记录(将域名映射到IPv4地址)、AAAA记录(映射到IPv6地址)、MX记录(邮件服务器)和CNAME记录(别名)等。 - **动态更新**:支持DNS记录的动态更新,...
通过查询DNS,它会验证邮件服务器的MX记录是否存在,从而判断邮件地址是否能成功接收邮件。 4. **易于使用**:JEmval库的API设计简洁,使用直观。开发者只需要调用几个方法,就可以轻松集成到项目中进行邮件地址...
修改和删除功能也有对应的代码实现,如在修改教师信息时,首先查询数据库确认教师存在,然后删除旧记录,最后添加更新后的信息。 在**运行环境和开发工具**方面,系统在Windows操作系统上运行,硬件要求相对较低,...
`Options`可以包括调试选项如`-debug`,检查源文件是否更新的`-checksource`,设置类路径的`-classpath`,以及调整内存分配的`-mx`和`-ms`等。这些选项有助于优化程序的运行和调试。 2. **Java Compiler (javac)**...
1. **基本DNS查询**:`dnsjava`库允许开发者通过简单的API调用来执行A(IP地址)、MX(邮件交换器)、CNAME(别名)、PTR(反向查找)等类型的DNS查询。例如,你可以用以下代码查询一个域名的IP地址: ```java ...
该项目将日历与记事本功能相结合,为用户提供了一个方便的平台来记录和管理日常生活中的事件和提醒。以下是关于这个课程设计项目的详细知识点: 1. **项目背景与目标**: - Java语言是面向对象编程的重要工具,...
- **前端技术**:Dreamweaver MX用于开发关联规则采掘系统。 - **后端技术**: - 数据库:采用SQL Server 2000作为数据存储。 - 数据库连接技术:使用JDBC-ODBC桥接技术实现Java应用程序与SQL Server的交互。 - ...
在Eagle DNS中,我们可以通过源码学习到DNS查询和响应的处理流程,包括DNS记录类型(如A、CNAME、MX等)的处理和解析。 Java源码是Eagle DNS的核心部分,它展示了如何利用Java的网络编程能力实现DNS服务。Java提供...
1. **全面的邮件地址验证**:JEmval库能处理各种复杂的电子邮件地址,包括本地部分、域名、MX记录验证等,确保符合电子邮件地址的官方规范。 2. **高性能**:JEmval的设计考虑了性能优化,可以在处理大量邮件地址时...
本系统涉及的管理功能可能包括客户信息管理、维修记录管理、配件库存管理、财务结算等功能。从标题和描述中我们可以推测,该系统采用的是Web应用的开发方式,很可能是一个B/S(Browser/Server,浏览器/服务器)架构...