سؤال

في جاوة،
كيف يمكن للبايت المرسلة والمستلمة عبر اتصال HTTP نشط تحسب منتديات أريد أن عرض بعض الإحصائيات مثل:

Bytes Sent     : xxxx Kb   
Bytes Received : xxxx Kb  
Duration       : hh:mm
هل كانت مفيدة؟

المحلول

ومن الصعب أن نرى كيف يمكن تزيين <لأ href = "http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/io/HttpConnection.html" يختلط = "نوفولو noreferrer "> HttpConnection لحساب البيانات بايت الخام. هل يمكن أن reimplement HTTP باستخدام مآخذ، ولكن هذا يجب أن تكون مهمة جدا للذهاب الى تلك أطوال.

وردا على عينة من stackoverflow.com:

HTTP/1.1 200 OK
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Mon, 21 Sep 2009 11:46:48 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
Date: Mon, 21 Sep 2009 11:46:48 GMT
Content-Length: 19452

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                      "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>...remaining data....
طلبات

وHTTP بسيطة ومعقولة، لذلك قد حاول إعادة باستخدام المعلومات التي تم كشفها. شيء من النموذج:

// TODO: edge cases, error handling, header delimiter, etc.
int byteCount = 0;
int headerIndex = 0;
while (true) {
  String key = httpConnection.getHeaderFieldKey(headerIndex);
  if (key == null)
    break;
  String value = httpConnection.getHeaderField(headerIndex++);
  byteCount += key.getBytes("US-ASCII").length
      + value.getBytes("US-ASCII").length + 2;
}
byteCount += httpConnection.getHeaderFieldInt("Content-Length",
    Integer.MIN_VALUE);

وهذا التنفيذ غير مكتمل وغير مجربة. كنت بحاجة إلى دراسة حتى على تفاصيل HTTP بروتوكول لضمان دقة الخاص بك النتائج.

نصائح أخرى

والتفاف getInputStream وHTTPURLConnection في () وgetOutputStream () في الجداول الخاصة بك التي تعتمد وحدات البايت التي تمر بها. أو حتى أفضل استخدام المكتبة أباتشي العموم IO - فقد عد تطبيقات تيار في وجود

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top