Blessing Venus

JAVA - C서버 소켓통신 처리하기 1부 본문

Tip&Tech/JAVA

JAVA - C서버 소켓통신 처리하기 1부

Blessing Venus 2017. 4. 2. 01:58

 

안드로이드 환경 또는 자바 환경에서 C로 구현된 서버와 소켓통신을 구현하는 방법에 대해서 알아보겠습니다.

아이폰 환경에서 C서버와 통신은 구조체 통신이 가능하지만,

안드로이드 환경에서 C서버와 통신할때는 ByteBuffer라는 녀석을 사용해야 합니다.

 

클라이언트와 서버간의 요청-응답 과정이 없는 구조에서는 단순히 클라이언트에서 업로드서버로 파일이 끝날때까지 데이터만 전송하면 되기 때문에 매우 손쉽게 구현이 가능합니다.

하지만 통신규약이 정해지고 클라이언트에서 패킷을 주고 다시 성공응답을 받고 다시 서버에서 클라이언트로 패킷을 보내고 클라이언트는 그 패킷에 따라 어떤 작업을 처리해야될때는 조금 어려워지게 됩니다.

이번 포스팅은 그 부분에 대해서 이야기를 해볼까 합니다.

이야기보다는 쉽게 풀어쓴 강좌라고 봐주시면 됩니다.

 

제가 처음 안드로이드 환경에서 C서버와 소켓통신을 할때 자료를 찾아보고 삽질도 하고 했습니다만..

앞으로 하시는 분들께서 조금이라도 삽질을 덜하시기 바라는 마음에서 포스팅을 합니다.

도움이 되셨다면 댓글정도는 부탁드리겠습니다.

시작합니다.

본 강좌는 소켓통신의 기본적 개념을 이해하신 분들께서 봐주셔야 도움이 되실 듯 합니다.

 

 


C서버와 소켓통신을 하기 전에 준비해야할 사항이 있습니다.

1. C서버에서 정의한 패킷 프로토콜 구조

2. C서버가 패킷 데이터들을 받는 순서

3. C서버가 정의한 패킷 데이터의 자료형

4. 서버와 클라이언트간의 전체적인 흐름 


위의 몇가지 내용은 필수적으로 필요한 내용들입니다.

주의하실 점은 3번에서 C서버에서 정의된 자료형이 일반 자바의 자료형과 다를 수 있다는 점입니다.


uint64_t usr_fileno;

uint64_t file_size;

 

예를들어 C서버에 위와 같이 정의가 되어 있다면 안드로이드에서는 8Byte 자료형 타입으로 보내야 합니다.

또한 패킷을 보낼때의 순서도 꼭 지켜주셔야 합니다.

C서버 개발자랑 협의해서 진행해 주시면 될 것 같습니다.


준비가 끝나면 통신처리를 해야합니다.

통신처리를 하기 위해서 사용하는 클래스는 자바 nio에서 제공하는 ByteBuffer 클래스입니다.

2부 포스팅전까지 ByteBuffer에 대해서 리서치를 해주시면 더욱 좋습니다.

 

2부에서는 ByteBuffer의 사용 방법과 주의 사항에 대해 포스팅하겠습니다.

'Tip&Tech > JAVA' 카테고리의 다른 글

JAVA - C서버 소켓통신 처리하기 2부  (0) 2017.04.02
Comments