R

 avatar
hacker98
plain_text
5 months ago
2.6 kB
2
Indexable
@Override
public void onCreate() {
    super.onCreate();
    MyinfoDAO myinfoDAO = new MyinfoDAO(this);
    String myIP = getDeviceIpAddress();
    myinfo = myinfoDAO.getInfoByIP(myIP);
    
    // Khởi tạo server trên một cổng nào đó
    socketServerThread = new Thread(() -> {
        try {
            serverSocket = new ServerSocket(1234);  // Chọn cổng cho server
            Log.i(TAG, "Server started on port 1234");

            while (!Thread.currentThread().isInterrupted()) {
                // Chấp nhận kết nối từ client
                Socket clientSocket = serverSocket.accept();
                Log.i(TAG, "Client connected");

                // Tạo một luồng riêng để xử lý kết nối
                new Thread(new ClientHandler(clientSocket)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    });
    socketServerThread.start();
}

// Tạo class ClientHandler để xử lý từng client riêng lẻ
private class ClientHandler implements Runnable {
    private Socket clientSocket;

    public ClientHandler(Socket socket) {
        this.clientSocket = socket;
    }

    @Override
    public void run() {
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            String message = in.readLine();
            Log.i(TAG, "Message from client: " + message);
            String messText = "";
            String ClientIP = String.valueOf(clientSocket.getInetAddress().getHostAddress());

            try {
                JSONObject jsonObject = new JSONObject(message);
                String type = jsonObject.getString("type");
                // Xử lý theo từng loại tin nhắn
                switch (type) {
                    case "MESSAGE":
                        handleIncomingMessage(jsonObject, ClientIP);
                        break;
                    case "FRIEND_REQUEST":
                        handleFriendRequest(jsonObject);
                        break;
                    case "FRIEND_RESPONSE":
                        handleFriendResponse(jsonObject, ClientIP);
                        break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            in.close();
            clientSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

// Các hàm xử lý MESSAGE, FRIEND_REQUEST, FRIEND_RESPONSE như bạn đã có.
Editor is loading...
Leave a Comment