투케이2K

123. (TWOK/LOGIC) [android] 안드로이드 UDP 소켓 통신 수행 시 응답 데이터 불필요 Byte 값 제거 및 String 반환 - Byte To String 본문

투케이2K 로직정리

123. (TWOK/LOGIC) [android] 안드로이드 UDP 소켓 통신 수행 시 응답 데이터 불필요 Byte 값 제거 및 String 반환 - Byte To String

투케이2K 2024. 11. 18. 20:20

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 UDP 소켓 통신 수행 시 응답 데이터 불필요 Byte 값 제거 및 String 반환 - Byte To String

 

[설 명]

 

// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 특정 프로젝트 생성 및 UDP 소켓 통신을 사용하기 위한 필요 권한 설정 (위치, 인터넷, 와이파이)

- UDP 소켓 통신을 수행하기 위한 클라이언트 모듈 클래스 생성 필요

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 애플리케이션 수행 및 UDP 소켓 통신을 동작 하기 위한 액티비티 화면 진입


2. UDP 소켓 통신 화면에서 와이파이 기능 활성 상태 및 소켓 통신을 수행하기 위한 특정 WIFI 에 연결된 상태 체크

  >> 와이파이가 비활성 상태인 경우나 특정 WIFI 에 연결 된 상태가 아닌 경우 : 해당 기능을 사용하기 위해서는 특정 WIFI 에 연결해 주세요. 알림 팝업창 표시


3. UDP 소켓 통신을 수행하기 위한 APP 상태가 모두 정상인 경우 DatagramSocket 데이터그램 소켓 생성 수행 실시


4. 소켓 생성 완료 시 서버 소켓이 활성 된 IP 주소와 PORT 를 사용해 전송 데이터 byte 변환 후 DatagramPacket 패킷 생성 수행


5. DatagramSocket send 를 사용해 DatagramPacket 데이터 전송 수행 및 응답 데이터 수신 대기 수행

  >> 여유 있게 응답 데이터를 받을 수 있는 바이트 배열 생성 : byte[] responseByte = new byte[2048];

  >> 응답 데이터를 받을 수 있는 DatagramPacket 생성 및 DatagramSocket receive 응답 데이터 수신 대기 처리


6. DatagramPacket 응답 데이터가 확인 되면 responseByte 응답 바이트 배열 값을 역순으로 for 문을 돌면서 0 값이 아닌 것을 찾을때까지 루프 수행


7. 0 값이 아닌 것을 찾으면 endIdx 변수에 해당 인덱스 번지 저장 후 새로운 바이트 배열 생성 (새로운 바이트 배열 크기는 endIdx + 1 값으로 지정)


8. System.arraycopy 를 사용해 실제 데이터 사용가능한 endIdx 까지 데이터 복사 수행


9. 복사된 byte 배열값을 new String UTF-8 방식으로 문자열로 변환 수행

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[안드로이드 : C_Udp_Client_Socket_Module : UDP 클라이언트 소켓 모듈]

https://blog.naver.com/kkh0977/223662106208


[안드로이드 : C_Udp_Server_Single_Socket_Module : UDP 서버 소켓 모듈]

https://blog.naver.com/kkh0977/223662101423

// --------------------------------------------------------------------------------------

 

반응형
Comments