001package arcommon.net; 002 003import java.io.BufferedReader; 004import java.io.IOException; 005import java.io.InputStreamReader; 006import java.io.PrintWriter; 007import java.net.Socket; 008 009public class LineConnection { 010 011 private PrintWriter out; 012 private BufferedReader in; 013 private Socket clientSocket; 014 private boolean connected; 015 016 public LineConnection(Socket pclientSocket) throws IOException { 017 setClientSocket(pclientSocket); 018 } 019 020 protected LineConnection() { 021 ; 022 } 023 024 protected void setClientSocket(Socket pclientSocket) throws IOException { 025 clientSocket = pclientSocket; 026 out = new PrintWriter(clientSocket.getOutputStream(), true); 027 in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 028 connected = true; 029 } 030 031 public String readLine() { 032 try { 033 String line = in.readLine(); 034 if (line == null) { 035 connected = false; 036 } 037 return line; 038 } catch (IOException e) { 039 connected = false; 040 return ""; 041 } 042 } 043 044 public char[] readChars(int length) { 045 char[] buffer = new char[length]; 046 try { 047 in.read(buffer); 048 } catch (IOException e) { 049 connected = false; 050 return null; 051 } 052 return buffer; 053 } 054 055 public boolean isConnected() { 056 return connected; 057 } 058 059 public synchronized void sendLine(String line) { 060 out.write(line + "\n"); 061 out.flush(); 062 } 063 064 public void close() { 065 connected = false; 066 if (clientSocket != null) { 067 try { 068 clientSocket.close(); 069 } catch (IOException e) { 070 throw new RuntimeException(e); 071 } 072 } 073 } 074}