R
hacker98
plain_text
a year ago
2.6 kB
6
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