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

📄 passivepoll.java

📁 分布式计算平台P2HP-1的源代码;P2HP-1是基于P2P的高性能计算平台
💻 JAVA
字号:
/*
 * Created on 2004-10-28
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package cn.edu.hust.cgcl.biogrid.dispatcher;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;

/**
 * @author Administrator
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class PassivePoll extends Thread{

	private ServerSocket serverSocket;
	private int serverPort;
	private boolean isActive=true;
	private HashMap items;
	public PassivePoll(int _serverPort,HashMap _items)
	{
		serverPort=_serverPort;
		items=_items;
	}
	
	public void run()
    {
        try
        {
            serverSocket = new ServerSocket(this.serverPort);
            //serverSocket.setSoTimeout(TIME_OUT);
            while (isActive)
            {
                Socket socket = null;
                try
                {
                    socket = serverSocket.accept();
                    Process p = new Process(socket); //连接后处理
                    p.start();
                }
                catch (java.io.InterruptedIOException e)
                {
                //等待连接超时,返回循环开头;(无处理)
                }
                catch (IOException e)
                {
                    log(e);
                }
                catch (SecurityException e)
                {
                    log(e);
                }
            } // while
            try
            {
                serverSocket.close();
            }
            catch (IOException e)
            {
                log(e);
            }
        } // try
        catch (IOException e)
        {
            log(e);
        }
        catch (SecurityException e)
        {
            log(e);
        }
    } // run

    /**
     *
     * <p>Title: </p>
     * <p>Description:连接处理线程:内联类 </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */
    public class Process
        extends Thread
    {
        Socket socket;
        private BufferedReader is;
        private PrintWriter os;
        //private ObjectOutputStream oob;
        private ObjectInputStream iob;

        public Process(Socket sock)
        {
            this.socket = sock;
            is=null;
            //oob=null;
            iob=null;
        }

        public void run()
        {
            //process the query from monitor
            if (socket == null)
            {
                return;
            }
            try
            {
                is = new BufferedReader(new InputStreamReader(socket.
                    getInputStream()));
                //oob = new ObjectOutputStream(socket.getOutputStream());
                iob = new ObjectInputStream(socket.getInputStream());
                //os = new PrintWriter(socket.getOutputStream());
                //协议传输数据
                String line=is.readLine();
                Item tmpitem=(Item)iob.readObject();
                if (items.isEmpty()) 
                {//insert
                	items.put(line,tmpitem);
                }
                else if (items.containsKey(line))
                {//update
                	items.remove(line);
                	items.put(line,tmpitem);
                }
                else 
                {//insert
                	items.put(line,tmpitem);
                }
            }
            catch (IOException e)
            {
                log(e);
            }
            catch (ClassNotFoundException e)
            {
                log(e);
            }
            finally
            {
                try
                {
                    is.close();
                    socket.close();
                    //oob.close();
                }
                catch (IOException e)
                {
                    log(e);
                }
            }
            return;
        } //process
    }

    public void terminate()
    {
        isActive = false; //终止serversocket服务器
    }

    public void log(Exception e)
    {
    e.printStackTrace();
    }
}

⌨️ 快捷键说明

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