fork download
  1. package com.yju.socket;
  2.  
  3. import java.net.InetAddress;
  4. import java.net.Socket;
  5.  
  6.  
  7. public abstract class TcpClient implements Runnable {
  8.  
  9. private int port;
  10. private String hostIP;
  11. private boolean connect = false;
  12. private SocketTransceiver transceiver;
  13.  
  14.  
  15. public void connect(String hostIP, int port) {
  16. this.hostIP = hostIP;
  17. this.port = port;
  18. new Thread(this).start();
  19. }
  20.  
  21. @Override
  22. public void run() {
  23. try {
  24. Socket socket = new Socket(hostIP, port);
  25. transceiver = new SocketTransceiver(socket) {
  26.  
  27. @Override
  28. public void onReceive(InetAddress addr, String s) {
  29. TcpClient.this.onReceive(this, s);
  30. }
  31.  
  32. @Override
  33. public void onDisconnect(InetAddress addr) {
  34. connect = false;
  35. TcpClient.this.onDisconnect(this);
  36. }
  37. };
  38. transceiver.start();
  39. connect = true;
  40. this.onConnect(transceiver);
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. this.onConnectFailed();
  44. }
  45. }
  46.  
  47.  
  48. public void disconnect() {
  49. if (transceiver != null) {
  50. transceiver.stop();
  51. transceiver = null;
  52. }
  53. }
  54.  
  55.  
  56. public boolean isConnected() {
  57. return connect;
  58. }
  59.  
  60.  
  61. public SocketTransceiver getTransceiver() {
  62. return isConnected() ? transceiver : null;
  63. }
  64.  
  65.  
  66. public abstract void onConnect(SocketTransceiver transceiver);
  67.  
  68.  
  69. public abstract void onConnectFailed();
  70.  
  71.  
  72. public abstract void onReceive(SocketTransceiver transceiver, String s);
  73.  
  74.  
  75. public abstract void onDisconnect(SocketTransceiver transceiver);
  76. }
  77.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:7: error: class TcpClient is public, should be declared in a file named TcpClient.java
public abstract class TcpClient implements Runnable {
                ^
Main.java:12: error: cannot find symbol
	private SocketTransceiver transceiver;
	        ^
  symbol:   class SocketTransceiver
  location: class TcpClient
Main.java:61: error: cannot find symbol
	public SocketTransceiver getTransceiver() {
	       ^
  symbol:   class SocketTransceiver
  location: class TcpClient
Main.java:66: error: cannot find symbol
	public abstract void onConnect(SocketTransceiver transceiver);
	                               ^
  symbol:   class SocketTransceiver
  location: class TcpClient
Main.java:72: error: cannot find symbol
	public abstract void onReceive(SocketTransceiver transceiver, String s);
	                               ^
  symbol:   class SocketTransceiver
  location: class TcpClient
Main.java:75: error: cannot find symbol
	public abstract void onDisconnect(SocketTransceiver transceiver);
	                                  ^
  symbol:   class SocketTransceiver
  location: class TcpClient
Main.java:25: error: cannot find symbol
			transceiver = new SocketTransceiver(socket) {
			                  ^
  symbol:   class SocketTransceiver
  location: class TcpClient
7 errors
stdout
Standard output is empty