📄 passivepoll.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 + -