R
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