MyTCPServer.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package ceres.service;
  2. import android.content.Context;
  3. import android.os.Handler;
  4. import android.os.Message;
  5. import android.util.Log;
  6. import java.io.BufferedReader;
  7. import java.io.BufferedWriter;
  8. import java.io.DataInputStream;
  9. import java.io.DataOutputStream;
  10. import java.io.IOException;
  11. import java.io.InputStreamReader;
  12. import java.io.OutputStreamWriter;
  13. import java.net.ServerSocket;
  14. import java.net.Socket;
  15. public class MyTCPServer {
  16. private static final String TAG = "TCPServer";
  17. private static int PORT = 4002;
  18. private static MyTCPServer mMyTCPServer;
  19. private TCPServerThread mServerThread;
  20. private Context mContext;
  21. private BufferedReader mInputBuffer;
  22. private BufferedWriter mOutputBuffer;
  23. private Handler mHandler;
  24. public MyTCPServer(Context context, Handler handler) {
  25. mContext = context;
  26. mHandler = handler;
  27. Log.d(TAG, "MyTCPServer: ");
  28. }
  29. public static MyTCPServer getInstance(Context context, Handler handler) {
  30. Log.d(TAG, "getInstance: ");
  31. if (mMyTCPServer == null) {
  32. Log.d(TAG, "getInstance: 1");
  33. mMyTCPServer = new MyTCPServer(context, handler);
  34. }
  35. return mMyTCPServer;
  36. }
  37. public void start() {
  38. if (mServerThread == null) {
  39. Log.d(TAG, "start(): ");
  40. mServerThread = new TCPServerThread();
  41. mServerThread.start();
  42. }
  43. }
  44. class TCPServerThread extends Thread {
  45. private Boolean working;
  46. private ServerSocket mServerSocket;
  47. private Socket client;
  48. private String clientIP;
  49. DataOutputStream output;
  50. DataInputStream input;
  51. public TCPServerThread() {
  52. working = true;
  53. }
  54. @Override
  55. public void run() {
  56. Thread.currentThread().setName("MyTCPServer");
  57. try {
  58. //ServerSocketFactory factory = SSLServerSocketFactory.getDefault();
  59. //mServerSocket = factory.createServerSocket(PORT);
  60. Log.d(TAG, "TCPServerThread(): ");
  61. mServerSocket = new ServerSocket(PORT);
  62. while(working) {
  63. Log.d(TAG, "TCPServerThread(): 1");
  64. // 리스닝
  65. client = mServerSocket.accept(); // Listens for a connection to be made to this socket and accepts it.
  66. clientIP = client.getInetAddress().getHostAddress();
  67. mOutputBuffer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  68. mInputBuffer = new BufferedReader(new InputStreamReader(client.getInputStream()), 10);
  69. String data;
  70. while (! client.isClosed()) {
  71. //Log.d(TAG, "TCPServerThread(): 2");
  72. if ((data = mInputBuffer.readLine()) != null) {
  73. Log.d(TAG, "read: " + data);
  74. if (data.equals("HEY")) {
  75. mOutputBuffer.write("ACK", 0, "ACK".length());
  76. mOutputBuffer.flush();
  77. Message msg = mHandler.obtainMessage(100, clientIP);
  78. mHandler.sendMessage(msg);
  79. }
  80. }
  81. }
  82. }
  83. } catch (IOException e) {
  84. Log.v(TAG, "Fail TCPServer!!");
  85. e.printStackTrace();
  86. }
  87. }
  88. public void cancel() {
  89. working = false;
  90. }
  91. }
  92. }