Notice
Recent Posts
Recent Comments
Link
투케이2K
896. (Android/Java) [간단 소스] UDP 소켓 통신 클라이언트 - 메시지 송신 및 수신 확인 : DatagramSocket mSocket 본문
Android
896. (Android/Java) [간단 소스] UDP 소켓 통신 클라이언트 - 메시지 송신 및 수신 확인 : DatagramSocket mSocket
투케이2K 2024. 11. 17. 10:54[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java
- 개발 툴 : Android Studio
- 구분 : 간단 소스
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [기기 등록 요청 실시 >> 응답 결과 확인]
// ------------------------------------------------------------------------------------------
public synchronized HashMap request_Device_Reg(DatagramSocket mSocket, String serverIp, int serverPort) {
S_Log._D_(ACTIVITY_NAME + " :: request_Device_Reg :: 기기 등록 요청 수행", new String[]{
"SERVER_IP :: " + String.valueOf(serverIp),
"SERVER_PORT :: " + String.valueOf(serverPort)
});
/**
* // ----------------------------------------
* TODO [REQUEST] : [APP >> DEVICE]
* // ----------------------------------------
*
* {
* "reg_name" : "TOWK"
* }
*
* // ----------------------------------------
* */
/**
* // ----------------------------------------
* TODO [RESPONSE] : [DEVICE >> APP]
* // ----------------------------------------
*
* {
* "result" : true
* }
*
* // ----------------------------------------
* */
// -----------------------------------------------
// [리턴 변수 선언]
// -----------------------------------------------
HashMap<String, Object> returnData = new HashMap<>();
// -----------------------------------------------
// [로직 처리 수행]
// -----------------------------------------------
try {
// -----------------------------------------
// TODO [DatagramSocket 널 체크 수행] : mSocket = new DatagramSocket();
// -----------------------------------------
if (mSocket == null){
returnData.put(RETURN_SUCCESS_FLAG, false);
returnData.put(RETURN_ERROR_MESSAGE, "Error :: DatagramSocket Is Null");
return returnData;
}
// -----------------------------------------
// -----------------------------------------
// TODO [App To Device] : [디바이스 등록 요청 실시]
// -----------------------------------------
JSONObject reqJson = new JSONObject();
reqJson.put("reg_name", "TWOK");
String requestData = reqJson.toString();
byte[] requestByte = requestData.getBytes(StandardCharsets.UTF_8); // [UTF-8 형식 바이트]
S_Log._D_(ACTIVITY_NAME + " :: request_Device_Reg :: [요청] :: [APP] >> [DEVICE] :: 기기 등록 요청 수행", new String[]{
"REQUEST [STRING] :: " + requestData.toString(),
"REQUEST [BYTE] :: " + Arrays.toString(requestByte)
});
DatagramPacket requestPacket = new DatagramPacket(requestByte, requestByte.length, InetAddress.getByName(serverIp),serverPort);
mSocket.send(requestPacket); // [IP, PORT 지정 패킷 전송]
// -----------------------------------------
// -----------------------------------------
// TODO [Device To App] : [디바이스 정보 응답 확인 실시]
// -----------------------------------------
byte[] responseByte = new byte[6144];
DatagramPacket responsePacket = new DatagramPacket(responseByte, responseByte.length);
mSocket.receive(responsePacket); // [응답 값을 저장할 저장소 지정]
// [byte to string 변환]
String jsonString = C_Util.getByteToString(responsePacket.getData());
//String jsonString = new String(responsePacket.getData(), "UTF-8");
//jsonString = jsonString.replaceAll(" ", "");
S_Log._D_(ACTIVITY_NAME + " :: request_Device_Reg :: [응답] :: [DEVICE] >> [APP] :: 기기 등록 응답 확인", new String[]{
"RESPONSE :: " + jsonString.toString()
});
// [리턴 데이터 삽입]
returnData.put(RETURN_SUCCESS_FLAG, true);
returnData.put(RETURN_ERROR_MESSAGE, "");
// -----------------------------------------
}
catch (Exception e){
S_Log._printStackTrace_(null, S_FinalData.LOG_BUG_STATE, null, e);
// [에러 발생 데이터 삽입]
returnData.put(RETURN_SUCCESS_FLAG, false);
returnData.put(RETURN_ERROR_MESSAGE, "Exception :: " + String.valueOf(e.getMessage()));
}
// [리턴 반환 실시]
return returnData;
}
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments