2011-07-30 6 views
1

나는 안드로이드에서 채팅 응용 프로그램의 요청을 처리 할 HTTP 서버를 만들고 싶습니다. 정말 혼란 스럽기 때문에 ... 코드에서 소켓을 사용해야합니까? 클라이언트가 서버와 통신하도록하려면 어떻게해야합니까? 클라이언트에서 요청을 수락하고 응답을 받기 위해 서버에 추가해야하는 코드는 무엇입니까? 클라이언트에서 사용하는 코드는 다음과 같습니다.자바 서버 (HTTP/소켓)

DefaultHttpClient client = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost:80"); 
List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); 
nvps.add(new BasicNameValuePair("username", username1)); 
nvps.add(new BasicNameValuePair("password", password1)); 
try { 
    UrlEncodedFormEntity p_entity = new UrlEncodedFormEntity(nvps, HTTP.UTF_8); 
    httppost.setEntity(p_entity); 

      //Execute HTTP Post Request 
      HttpResponse response = client.execute(httppost); 
      Log.v(TAG,"something"); 
      Log.v(TAG, response.getStatusLine().toString()); 
      HttpEntity responseEntity = response.getEntity(); 

정말 답이 필요합니다. 고맙습니다!!!

답변

1

소켓 (클라이언트 용 소켓, 서버용 ServerSocket)은 가장 기본적인 통신 계층입니다. 당신은 TCP 또는 UDP를 선택하고 그것을 통해 모든 프로토콜을 인코딩해야합니다.

또한 상위 수준 프로토콜 (HTTP, FTP 및 SOAP보다 높은 수준)을 인코딩하는 라이브러리가 있습니다. 이러한 라이브러리를 사용하는 경우 일반적으로 라이브러리 자체에서 수행하는 것처럼 소켓을 관리 할 필요가 없습니다. 서버에서는 바인딩 할 포트와 선택적으로 IP 만 지정하고 클라이언트에서는 연결할 호스트와 포트를 지정합니다.

다른 조합을 사용할 수 있습니다 (예 : SOAP로 서버를 구현 한 다음 Socket을 사용하여 클라이언트에서 SOAP 메시지를 작성하여 전송). 가장 간단한 방법은 서버와 클라이언트 모두에 동일한 라이브러리를 사용하는 것입니다.

어느 것이 더 나은가 : 그것은 당신이 원하는 것에 달려 있습니다. 상위 라이브러리는보다 유연하지만 마스터하는 데 시간이 걸릴 수 있으며 모든 오버 헤드를 관리 할 수있는 낮은 수준의 요구가있을 수 있습니다. 설득력있는 이유가 없다면 나는 보통 HTTP 프로토콜 (JVM이나 Apache Foundation 프로젝트 모두)을 사용한다.

+0

답장을 보내 주셔서 감사합니다. 이제는 나에게 더 분명하게 보인다. 고맙습니다! – anna