📄 listenerclient.java
字号:
/*
* =========================================================== JDBMonitor : a
* flexiable JDBC Monitor for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2006-2006, by yang zhongke
*
* Project Info: http://www.cownew.com
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc. in the
* United States and other countries.]
*
* --------------- ListenerClient.java --------------- (C) Copyright 2006-2006,
* by yang zhongke
*
* Original Author: yang zhongke;
*
* Changes -------
*
*/
package com.cownew.JDBMonitor.listenerImpl.sckListenerClient;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.Socket;
import com.cownew.JDBMonitor.common.CommonUtils;
import com.cownew.JDBMonitor.common.InstanceUtils;
import com.cownew.JDBMonitor.common.SQLInfo;
/**
* this is the client that listens the SocketDBListener<br>
* @author yang zhongke
*/
public class ListenerClient
{
private int port;
private String hostname;
private IDBSocketClientListener listener;
private Socket socket;
private boolean isClosed;
/**
* constuct a Client Listener,which will connect to "hostName" at port "port"<br>
* when a SQL statement received,the method "receive"
* of IDBSocketClientListener will be invoked<br>
* @param hostName
* @param port
* @param listener
*/
public ListenerClient(String hostName, int port,
IDBSocketClientListener listener)
{
super();
this.hostname = hostName;
this.port = port;
this.listener = listener;
isClosed = false;
}
/**
* connect to the socket server
* @throws IOException
*/
public void connect() throws IOException
{
socket = new Socket(hostname, port);
Thread thread = new Thread(new SocketListener());
thread.start();
}
class SocketListener implements Runnable
{
public SocketListener()
{
super();
}
public void run()
{
try
{
while (true)
{
synchronized (socket)
{
if (isClosed)
{
return;
}
ObjectInputStream ois = new ObjectInputStream(socket
.getInputStream());
listener.receive((SQLInfo) ois.readObject());
}
}
} catch (IOException e)
{
throw CommonUtils.toRuntimeException(e);
} catch (ClassNotFoundException e)
{
throw CommonUtils.toRuntimeException(e);
}
}
}
public void close() throws IOException
{
synchronized (socket)
{
isClosed = true;
}
InstanceUtils.closeSocket(socket);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -