【发布时间】:2010-03-06 19:08:10
【问题描述】:
在 Moritz Haarmann 的博客中,我找到了 example of usage of Bonjour by Java。这是从那里获取的代码:
public class ServiceAnnouncer implements IServiceAnnouncer, RegisterListener {
private DNSSDRegistration serviceRecord;
private boolean registered;
public boolean isRegistered(){
return registered;
}
public void registerService() {
try {
serviceRecord = DNSSD.register(0,0,null,"_killerapp._tcp", null,null,1234,null,this);
} catch (DNSSDException e) {
// error handling here
}
}
public void unregisterService(){
serviceRecord.stop();
registered = false;
}
public void serviceRegistered(DNSSDRegistration registration, int flags,String serviceName, String regType, String domain){
registered = true;
}
public void operationFailed(DNSSDService registration, int error){
// do error handling here if you want to.
}
}
我对“serviceRegistered”方法有疑问。据我了解,在服务注册期间(或之后)调用它(并将变量“registered”设置为等于“true”)。但是我不清楚它是如何被调用的。因为服务是通过“registerService”方法注册的。该方法又调用“DNSSD.register”。而且,据我了解,“DNSSD.register”将调用“ServiceAnnouncer”类的“serviceRegister”方法。但是“DNSSD.register”如何知道它需要调用“ServiceAnnouncer”类的方法呢? “DNSSD.register”能否知道它是从特定类(在本例中为“ServiceAnnouncer”类)调用的?
【问题讨论】:
-
不相关,但您想删除接口前面的“I”,以遵循 Java 编码标准(并为您的 Java 程序员同行提供可读性)。
-
是的,但我在编写代码时并不完全了解 Java 编码标准.. :-)