Im мое приложение для Android. У меня есть клиент, который должен выполнять несколько HTTP-запросов в секунду на сервер.
Я достигаю этого следующим образом:
public class myclient implements Runnable {
private HttpClient httpClient = null;
private HttpParams params = null;
private HttpGet httpRequest;
myclient () {
httpClient = new DefaultHttpClient();
params = httpClient.getParams();
httpRequest = new HttpGet(request);
HttpConnectionParams.setConnectionTimeout(params, 60000);
HttpConnectionParams.setSoTimeout(params, 60000);
...
}
@Override
public void run() {
HttpResponse response = httpClient.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(entity);
InStream = bufferedHttpEntity.getContent();
...
}
}
Теперь проблема: в то время как конечным портом каждого запроса является порт 80, локальный порт меняется при каждом запросе. Это вызывает некоторые проблемы с брандмауэрами. Есть ли способ сохранить локальный порт постоянным? Я решил эту проблему в приложении .NET, установив для локального порта фиксированное значение. Но здесь это кажется невозможным. Более того, я предполагаю, что изменение локального порта означает новое TCP-соединение: почему соединение не сохраняется?
means a new TCP connection: why the connection is not preserved?
Http — это протокол без установления соединения. - person greenapps   schedule 09.03.2018