⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnsserverserviceimpl.java

📁 实现了一个由时间服务器
💻 JAVA
字号:
package dnsServer;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.LinkedList;

public class DnsServerServiceImpl extends UnicastRemoteObject implements
		DnsServerService {

	protected DnsServerServiceImpl() throws RemoteException {
		super();
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = -8776756004931031423L;

	ServiceList list=null;
	
	public String logout(String serviceUrl, String serviceName) throws RemoteException {
		list=this.readUserListFromFile();
		LinkedList<Node> list1=list.getList();
		int i;
		for(i=0;i<list1.size();i++){
			if(list1.get(i).url.equals(serviceUrl) && list1.get(i).service.equals(serviceName)){
				break;
			}
		}
		if(i<list1.size()){
			list1.remove(i);
			writeUserListToFile(list);
			System.out.println("服务器"+serviceUrl+"注销服务"+serviceName+"成功");
			return "注销成功";
		}
		else{
			System.out.println("服务器"+serviceUrl+"注销服务"+serviceName+"失败");
			return "注销失败";
		}
	}

	public String lookupService(String serviceName) throws RemoteException {
		list = this.readUserListFromFile();
		LinkedList<Node> list1 = list.getList();
		int i;
		Node temp = null;
		for (i = 0; i < list1.size(); i++) {
			if (list1.get(i).service.equals(serviceName)) {
				if (temp == null) {
					temp = list1.get(i);
				} else {
					if (temp.failNo > list1.get(i).failNo) {
						temp = list1.get(i);
					}
				}
			}
		}
		
		if(temp==null){
			System.out.println("no service");
			return null;
		}
		System.out.println("客户端查询服务"+serviceName+",返回时间服务器地址为"+temp.url);
		return temp.url;
	}

	public String lookupService(String serviceName, String url) throws RemoteException {
		list = this.readUserListFromFile();
		LinkedList<Node> list1 = list.getList();
		int i;
		for (i = 0; i < list1.size(); i++) {
			if (list1.get(i).url.equals(url)
					&& list1.get(i).service.equals(serviceName)) {
				list1.get(i).failNo++;
				break;
			}
		}
		int j;
		Node temp = null;
		for (j = 0; j < list1.size(); j++) {
			if(j==i){
				continue;
			}
			if (list1.get(j).service.equals(serviceName)) {
				if (temp == null) {
					temp = list1.get(j);
				} else {
					if (temp.failNo > list1.get(j).failNo) {
						temp = list1.get(j);
					}
				}
			}
		}
		if(temp==null){
			temp=list1.get(i);
		}
		writeUserListToFile(list);
		System.out.println("客户端查询服务"+serviceName+",返回时间服务器地址为"+temp.url);
		return temp.url;
	}

	public String registerService(String serviceUrl, String serviceName) throws RemoteException {
		list=this.readUserListFromFile();
		LinkedList<Node> list1=list.getList();
		for(int i=0;i<list1.size();i++){
			if(list1.get(i).url.equals(serviceUrl) && list1.get(i).service.equals(serviceName)){
				System.out.println("服务器"+serviceUrl+"的服务"+serviceName+"已经注册过");
				return "该服务已经注册";
			}
		}
		Node node=new Node(serviceUrl,serviceName);
		list1.add(node);
		writeUserListToFile(list);
		System.out.println("服务器"+serviceUrl+"注册服务"+serviceName+"成功");
		return "注册成功";
	}

	
	private ServiceList readUserListFromFile(){
		ServiceList list=null;
		ObjectInputStream ois;
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("serviceList.txt");
			ois=new ObjectInputStream(fis);
			Object obj=ois.readObject();
		   	list=(ServiceList)obj;  	   	
			ois.close();
			fis.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}finally{
			try {
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return list;
	}
	
	private void writeUserListToFile(ServiceList list){
		ObjectOutputStream oos;
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("serviceList.txt",false);
			oos = new ObjectOutputStream(fos);
			oos.writeObject(list);
			oos.flush();
			oos.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				fos.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -