Сервер на Java (HTTP / сокеты)

1

Я хочу создать Http-сервер, который будет обслуживать запросы чат-приложения в android. Потому что я действительно запутался... в моем коде мне нужно использовать сокеты? Как я могу заставить клиента общаться с сервером? Какой код я должен добавить на сервер, чтобы принимать запросы от клиента и отвечать на них? Код, который я использую в клиенте, следующий:

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 ответ

1
Лучший ответ

Сокеты (Socket для клиента, ServerSocket для сервера) - это самый базовый уровень связи. Вы выбрали TCP или UDP и над ним, вам нужно закодировать весь ваш протокол.

Существуют также некоторые библиотеки, которые кодируют протоколы более высокого уровня (HTTP, FTP и даже выше, чем SOAP). Если вы используете эти библиотеки, вам обычно не нужно управлять сокетом, как это делает сама библиотека (на сервере вы указываете только порт и, возможно, IP для привязки, в клиенте вы указываете хост и порт для подключения).

Вы можете использовать разные комбинации (vg, реализующие ваш сервер с SOAP, а затем создание и отправку SOAP-сообщения от клиента с помощью Socket), но самый простой способ - использовать ту же библиотеку как для сервера, так и для клиента.

О каком из них лучше: это зависит от того, что вы хотите. Библиотеки более высокого уровня более гибкие, но могут потребоваться время для освоения и могут иметь дополнительные накладные расходы, более низкие потребности в уровне, которыми вы все управляете. Если нет более веских причин, я обычно просто использую протокол HTTP (как из JVM, так и из проектов Apache Foundation).

  • 0
    Спасибо за Ваш ответ. Сейчас мне это кажется более понятным. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню