123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package ceres.service;
- import android.content.Context;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class MyTCPServer {
- private static final String TAG = "TCPServer";
- private static int PORT = 4002;
- private static MyTCPServer mMyTCPServer;
- private TCPServerThread mServerThread;
- private Context mContext;
- private BufferedReader mInputBuffer;
- private BufferedWriter mOutputBuffer;
- private Handler mHandler;
- public MyTCPServer(Context context, Handler handler) {
- mContext = context;
- mHandler = handler;
- Log.d(TAG, "MyTCPServer: ");
- }
- public static MyTCPServer getInstance(Context context, Handler handler) {
- Log.d(TAG, "getInstance: ");
- if (mMyTCPServer == null) {
- Log.d(TAG, "getInstance: 1");
- mMyTCPServer = new MyTCPServer(context, handler);
- }
- return mMyTCPServer;
- }
- public void start() {
- if (mServerThread == null) {
- Log.d(TAG, "start(): ");
- mServerThread = new TCPServerThread();
- mServerThread.start();
- }
- }
- class TCPServerThread extends Thread {
- private Boolean working;
- private ServerSocket mServerSocket;
- private Socket client;
- private String clientIP;
- DataOutputStream output;
- DataInputStream input;
- public TCPServerThread() {
- working = true;
- }
- @Override
- public void run() {
- Thread.currentThread().setName("MyTCPServer");
- try {
- //ServerSocketFactory factory = SSLServerSocketFactory.getDefault();
- //mServerSocket = factory.createServerSocket(PORT);
- Log.d(TAG, "TCPServerThread(): ");
- mServerSocket = new ServerSocket(PORT);
- while(working) {
- Log.d(TAG, "TCPServerThread(): 1");
- // 리스닝
- client = mServerSocket.accept(); // Listens for a connection to be made to this socket and accepts it.
- clientIP = client.getInetAddress().getHostAddress();
- mOutputBuffer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
- mInputBuffer = new BufferedReader(new InputStreamReader(client.getInputStream()), 10);
- String data;
- while (! client.isClosed()) {
- //Log.d(TAG, "TCPServerThread(): 2");
- if ((data = mInputBuffer.readLine()) != null) {
- Log.d(TAG, "read: " + data);
- if (data.equals("HEY")) {
- mOutputBuffer.write("ACK", 0, "ACK".length());
- mOutputBuffer.flush();
- Message msg = mHandler.obtainMessage(100, clientIP);
- mHandler.sendMessage(msg);
- }
- }
- }
- }
- } catch (IOException e) {
- Log.v(TAG, "Fail TCPServer!!");
- e.printStackTrace();
- }
- }
- public void cancel() {
- working = false;
- }
- }
- }
|