package guang.crawler.connector; import guang.crawler.jsonServer.DataPacket; import guang.crawler.util.StreamHelper; import java.io.IOException; import java.net.Socket; /** * 连接站点管理器启动的JSON 服务器的连接器. * * @author sun * */ public class JSONServerConnector { /** * 底层套接字 */ private Socket socket; /** * 主机名 */ private String host; /** * 端口号 */ private int port; /** * 创建一个JSON服务器的连接器 * * @param host * @param port */ public JSONServerConnector(final String host, final int port) { this.host = host; this.port = port; } /** * 打开连接.在进行其他操作之前必须先进行当前操作. * * @return */ public boolean open() { try { this.socket = new Socket(this.host, this.port); return true; } catch (Exception e) { return false; } } /** * 从JSON服务器中读取一个数据包. * * @return * @throws IOException */ public DataPacket read() throws IOException { return StreamHelper.readObject(this.socket.getInputStream(), DataPacket.class); } /** * 向JSON服务器发送一个数据包. * * @param packet * @throws IOException */ public void send(final DataPacket packet) throws IOException { StreamHelper.writeObject(this.socket.getOutputStream(), packet); } /** * 关闭连接. */ public void shutdown() { if (this.socket != null) { try { this.socket.close(); } catch (IOException e) { // skip } } } }