마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

소켓통신 구조에 대해서 질문입니다!

0 추천
제가 서버와 소켓통신을 하고 싶은데 다른 예제 많이 참고해봣는데 좀 이해안되는 부분이 있어서요..

안드로이드 프로젝트에 존재하는 A라는 액티비티가 존재하면 여기서 버튼이 있구요 EditText가 있구요 Image가 있는데

버튼을 클릭하게 됬을 때 최종적으로는 text와 이미지 모두 전달하고 싶은데 지금 테스트로 텍스트만 서버에 넘기고 싶거든요

테스트한다고 했을 때 서버부분은 TCPServer.java를 같은 안드로이드 프로젝트 안에 만들어야되나요? 아니면 따로 자바프로젝트를 만들어서 거기에 만들어야되나요?..제가 생각했을 때는 다른 자바프로젝트에서 만드는거 같은데

그 예제는 따라해봣는데 계속 에러만 떠서요

개념이 없어서 막 횡설수설한것도 있고...밤새서 지금 머리가 안돌아가는것도 있는데 아무튼 요지는

클라이언트에서 에티트텍스트로 받은 스트링을 버튼 클릭시 서버쪽에 전달하고 그것을 확인해보려할 때 프로젝트를 어떻게 만들어야되는지랑 팁이 될만한 내용좀 알려주시면 정말 감사하겠습니다 ㅠㅠ
MJS (290 포인트) 님이 2013년 5월 31일 질문

1개의 답변

0 추천
 
채택된 답변
- 서버 = PC = 자바 프로젝트
- 클라이언트 = 안드로이드폰 = 안드로이드 프로젝트

처음 하시는 거라면 개념잡기가 어려우실텐데..
일단은 처음 하시는거니 텍스트만 보낸다고 했을때는,

클라이언트와 서버가 연결되었다는 전제하에, 말씀드리면
서버에서는 while 문 이용하여 read 만 반복적으로 하고
read 한것을 바로 string 으로 변환해서 콘솔로 출력하시는 것으로 구현하시고,
클라이언트에서는 write 하도록 일단 구현을 해보세요.
연결의 끝은 클라이언트에서 종료 했을때, 소켓을 close 하면 종료가 되겠고요.

하지만 후에 텍스트와 이미지의 복합적인 전송까지 고려하신다면, 데이터를 보내실때, 형식을 정의하셔야 할거예요.
일반적으로 패킷의 프로토콜을 정의한다고 하는데,

예를 들어
처음보내는 패킷의 데이터의 첫번째 바이트는 어떤 데이터(이미지, 텍스트)를 보낼것인가 알려주는 바이트가 되고
2번째에서~5번째는 보낼데이터의 바이트크기 6번째부터는 데이터부분.

위와 같이 정의를 해둬야 하나의 소켓연결에서도 다양한 유형의 데이터를 보낼수 있으며, 무결성도 체크가 가능하게 됩니다.

개인적으로는 책이라도 구입하셔서 공부하셨으면 하네요. 개념 잡는게 중요하기 때문에:ㅁ
Frog (3,910 포인트) 님이 2013년 5월 31일 답변
MJS님이 2013년 6월 1일 채택됨
...