ndt-dev - [ndt] r363 committed - Initial checkin of Android port...
Subject: NDT-DEV email list created
List archive
- From:
- To:
- Subject: [ndt] r363 committed - Initial checkin of Android port...
- Date: Wed, 09 Jun 2010 22:24:16 +0000
Revision: 363
Author:
Date: Wed Jun 9 15:23:05 2010
Log: Initial checkin of Android port
This change does several things:
- Splits the applet into 2 parts (UI and common)
(The UI code remains in Tcpbw100.java; the common testing code
is now in NdtTests.java)
- Moves the common Java code (NdtTests) under java/
- Moves the properties files under java/
- Adds Android code/resources under Android/
The Android port builds and runs, but the applet's build files have
not yet been updated. (It does still compile, but the Makefile needs
updating/cleanup).
http://code.google.com/p/ndt/source/detail?r=363
Added:
/branches/android/Android
/branches/android/Android/AndroidManifest.xml
/branches/android/Android/README
/branches/android/Android/build.xml
/branches/android/Android/default.properties
/branches/android/Android/res
/branches/android/Android/res/drawable
/branches/android/Android/res/drawable/ndt.png
/branches/android/Android/res/layout
/branches/android/Android/res/layout/main.xml
/branches/android/Android/res/layout/servers.xml
/branches/android/Android/res/layout/stats.xml
/branches/android/Android/res/values
/branches/android/Android/res/values/strings.xml
/branches/android/Android/src
/branches/android/Android/src/net
/branches/android/Android/src/net/measurementlab
/branches/android/Android/src/net/measurementlab/ndt
/branches/android/Android/src/net/measurementlab/ndt/AndroidNdt.java
/branches/android/Android/src/net/measurementlab/ndt/AndroidUiServices.java
/branches/android/Android/src/net/measurementlab/ndt/Constants.java
/branches/android/Android/src/net/measurementlab/ndt/NdtLocation.java
/branches/android/Android/src/net/measurementlab/ndt/SelectServer.java
/branches/android/Android/src/net/measurementlab/ndt/Statistics.java
/branches/android/java
/branches/android/java/Tcpbw100_msgs_ca_ES.properties
/branches/android/java/Tcpbw100_msgs_en_US.properties
/branches/android/java/Tcpbw100_msgs_fr_FR.properties
/branches/android/java/Tcpbw100_msgs_nb_NO.properties
/branches/android/java/Tcpbw100_msgs_nl_NL.properties
/branches/android/java/Tcpbw100_msgs_pt_BR.properties
/branches/android/java/Tcpbw100_msgs_ru_RU.properties
/branches/android/java/net
/branches/android/java/net/measurementlab
/branches/android/java/net/measurementlab/ndt
/branches/android/java/net/measurementlab/ndt/NdtTests.java
/branches/android/java/net/measurementlab/ndt/UiServices.java
Deleted:
/branches/android/Applet/Tcpbw100_msgs_ca_ES.properties
/branches/android/Applet/Tcpbw100_msgs_en_US.properties
/branches/android/Applet/Tcpbw100_msgs_fr_FR.properties
/branches/android/Applet/Tcpbw100_msgs_nb_NO.properties
/branches/android/Applet/Tcpbw100_msgs_nl_NL.properties
/branches/android/Applet/Tcpbw100_msgs_pt_BR.properties
/branches/android/Applet/Tcpbw100_msgs_ru_RU.properties
Modified:
/branches/android/Applet/Tcpbw100.java
=======================================
--- /dev/null
+++ /branches/android/Android/AndroidManifest.xml Wed Jun 9 15:23:05
2010
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="net.measurementlab.ndt" android:versionCode="1"
+ android:versionName="1.0">
+ <application android:icon="@drawable/ndt" android:label="@string/app_name">
+ <activity android:name=".AndroidNdt" android:label="@string/app_name">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <!-- SelectServer.java: Options Activity for selecting the test server -->
+ <activity android:name=".SelectServer" android:label="@string/choice_server_title" />
+ <!-- Statistics.java: Report detailed information to user -->
+ <activity android:name=".Statistics" android:label="@string/statistics" />
+ </application>
+ <uses-sdk android:minSdkVersion="2" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+</manifest>
=======================================
--- /dev/null
+++ /branches/android/Android/README Wed Jun 9 15:23:05 2010
@@ -0,0 +1,30 @@
+This directory contains the Android port of NDT.
+
+Build requirements:
+ - The Android SDK (available from http://developer.android.com/sdk/)
+ * Note: SDK .tar.gz merely needs to be unfurled
+ - Apache Ant (available from http://ant.apache.org/)
+ - JDK 5 or 6 (available from http://java.sun.com/javase/downloads/)
+
+Build instructions:
+
+1. Create a 'local.properties' file to specify the SDK path:
+
+ sdk-location=/usr/local/foo/android/android-sdk-linux_86
+
+2. Use ant to build in this directory:
+
+ $ ant debug
+
+3. Install bin/AndroidNdt-debug.apk on an emulator or device.
+
+ For emulators or USB-connected devices:
+ $ ant install
+
+ Note: for this to work, 'USB Debugging' will need to be enabled on the device
+ (Settings -> Applications -> Development). You can also download the apk on
+ the device and install it directly, provided "Unknown sources" (in Settings ->
+ Applications) is enabled.
+
+For release builds, use 'ant release', and sign bin/AndroidNdt-unsigned.apk with
+a release key before publishing it to the Market.
=======================================
--- /dev/null
+++ /branches/android/Android/build.xml Wed Jun 9 15:23:05 2010
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="AndroidNdt" default="help">
+
+ <!-- The local.properties file is created and updated by the 'android' tool.
+ It contain the path to the SDK. It should *NOT* be checked in in Version
+ Control Systems. -->
+ <property file="local.properties"/>
+
+ <!-- The build.properties file can be created by you and is never touched
+ by the 'android' tool. This is the place to change some of the default property values
+ used by the Ant rules.
+ Here are some properties you may want to change/update:
+
+ application-package
+ the name of your application package as defined in the manifest. Used by the
+ 'uninstall' rule.
+ source-folder
+ the name of the source folder. Default is 'src'.
+ out-folder
+ the name of the output folder. Default is 'bin'.
+
+ Properties related to the SDK location or the project target should be updated
+ using the 'android' tool with the 'update' action.
+
+ This file is an integral part of the build system for your application and
+ should be checked in in Version Control Systems.
+
+ -->
+ <property file="build.properties"/>
+
+ <!-- The default.properties file is created and updated by the 'android' tool, as well
+ as ADT.
+ This file is an integral part of the build system for your application and
+ should be checked in in Version Control Systems. -->
+ <property file="default.properties"/>
+
+ <!-- Custom Android task to deal with the project target, and import the proper rules.
+ This requires ant 1.6.0 or above. -->
+ <path id="android.antlibs">
+ <pathelement path="${sdk-location}/tools/lib/anttasks.jar" />
+ <pathelement path="${sdk-location}/tools/lib/sdklib.jar" />
+ <pathelement path="${sdk-location}/tools/lib/androidprefs.jar" />
+ <pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" />
+ <pathelement path="${sdk-location}/tools/lib/jarutils.jar" />
+ </path>
+
+ <taskdef name="setup"
+ classname="com.android.ant.SetupTask"
+ classpathref="android.antlibs"/>
+
+ <!-- Execute the Android Setup task that will setup some properties specific to the target,
+ and import the rules files.
+ To customize the rules, copy/paste them below the task, and disable import by setting
+ the import attribute to false:
+ <setup import="false" />
+
+ This will ensure that the properties are setup correctly but that your customized
+ targets are used.
+ -->
+ <setup import="false"/>
+
+ <!-- This file was taken from {sdk-directory}/platform/android-1.1/templates/android_rules.xml
+ common-folder was added and target compile was modified to do the automatic compile.
+ -->
+
+ <!-- Custom tasks -->
+ <taskdef name="aaptexec"
+ classname="com.android.ant.AaptExecLoopTask"
+ classpathref="android.antlibs"/>
+
+ <taskdef name="apkbuilder"
+ classname="com.android.ant.ApkBuilderTask"
+ classpathref="android.antlibs"/>
+
+ <!-- Properties -->
+
+ <property name="android-tools" value="${sdk-location}/tools" />
+
+ <!-- Input directories -->
+ <property name="source-folder" value="src" />
+ <property name="common-folder" value="../java" />
+ <property name="gen-folder" value="gen" />
+ <property name="resource-folder" value="res" />
+ <property name="asset-folder" value="assets" />
+ <property name="source-location" value="${basedir}/${source-folder}" />
+
+ <!-- folder for the 3rd party java libraries -->
+ <property name="external-libs-folder" value="libs" />
+
+ <!-- folder for the native libraries -->
+ <property name="native-libs-folder" value="libs" />
+
+ <!-- Output directories -->
+ <property name="gen-folder" value="gen" />
+ <property name="out-folder" value="bin" />
+ <property name="out-classes" value="${out-folder}/classes" />
+ <property name="out-classes-location" value="${basedir}/${out-classes}"/>
+ <!-- out folders for a parent project if this project is an instrumentation project -->
+ <property name="main-out-folder" value="../${out-folder}" />
+ <property name="main-out-classes" value="${main-out-folder}/classes"/>
+
+ <!-- Intermediate files -->
+ <property name="dex-file" value="classes.dex" />
+ <property name="intermediate-dex" value="${out-folder}/${dex-file}" />
+ <!-- dx does not properly support incorrect / or \ based on the platform
+ and Ant cannot convert them because the parameter is not a valid path.
+ Because of this we have to compute different paths depending on the platform. -->
+ <condition property="intermediate-dex-location"
+ value="${basedir}\${intermediate-dex}"
+ else="${basedir}/${intermediate-dex}" >
+ <os family="windows"/>
+ </condition>
+
+ <!-- The final package file to generate -->
+ <property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
+
+ <!-- Tools -->
+ <condition property="exe" value=".exe" else=""><os family="windows"/></condition>
+ <property name="adb" value="${android-tools}/adb${exe}"/>
+
+ <!-- rules -->
+
+ <!-- Create the output directories if they don't exist yet. -->
+ <target name="dirs">
+ <echo>Creating output directories if needed...</echo>
+ <mkdir dir="${resource-folder}" />
+ <mkdir dir="${external-libs-folder}" />
+ <mkdir dir="${gen-folder}" />
+ <mkdir dir="${out-folder}" />
+ <mkdir dir="${out-classes}" />
+ </target>
+
+ <!-- Generate the R.java file for this project's resources. -->
+ <target name="resource-src" depends="dirs">
+ <echo>Generating R.java / Manifest.java from the resources...</echo>
+ <exec executable="${aapt}" failonerror="true">
+ <arg value="package" />
+ <arg value="-m" />
+ <arg value="-J" />
+ <arg path="${gen-folder}" />
+ <arg value="-M" />
+ <arg path="AndroidManifest.xml" />
+ <arg value="-S" />
+ <arg path="${resource-folder}" />
+ <arg value="-I" />
+ <arg path="${android-jar}" />
+ </exec>
+ </target>
+
+ <!-- Generate java classes from .aidl files. -->
+ <target name="aidl" depends="dirs">
+ <echo>Compiling aidl files into Java classes...</echo>
+ <apply executable="${aidl}" failonerror="true">
+ <arg value="-p${android-aidl}" />
+ <arg value="-I${source-folder}" />
+ <arg value="-o${gen-folder}" />
+ <fileset dir="${source-folder}">
+ <include name="**/*.aidl"/>
+ </fileset>
+ </apply>
+ </target>
+
+ <!-- Compile this project's .java files into .class files. -->
+ <target name="compile" depends="resource-src, aidl">
+ <javac encoding="ascii" target="1.5" debug="true" extdirs=""
+ destdir="${out-classes}"
+ bootclasspathref="android.target.classpath">
+ <src path="${source-folder}" />
+ <src path="${gen-folder}" />
+ <src path="${common-folder}" />
+ <classpath>
+ <fileset dir="${external-libs-folder}" includes="*.jar"/>
+ <pathelement path="${main-out-classes}"/>
+ </classpath>
+ </javac>
+ </target>
+
+ <!-- Convert this project's .class files into .dex files. -->
+ <target name="dex" depends="compile">
+ <echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
+ <apply executable="${dx}" failonerror="true" parallel="true">
+ <arg value="--dex" />
+ <arg value="--output=${intermediate-dex-location}" />
+ <arg path="${out-classes-location}" />
+ <fileset dir="${external-libs-folder}" includes="*.jar"/>
+ </apply>
+ </target>
+
+ <!-- Put the project's resources into the output package file
+ This actually can create multiple resource package in case
+ Some custom apk with specific configuration have been
+ declared in default.properties.
+ -->
+ <target name="package-resources">
+ <echo>Packaging resources</echo>
+ <aaptexec executable="${aapt}"
+ command="package"
+ manifest="AndroidManifest.xml"
+ resources="${resource-folder}"
+ assets="${asset-folder}"
+ androidjar="${android-jar}"
+ outfolder="${out-folder}"
+ basename="${ant.project.name}" />
+ </target>
+
+ <!-- Package the application and sign it with a debug key.
+ This is the default target when building. It is used for debug. -->
+ <target name="debug" depends="dex, package-resources">
+ <apkbuilder
+ outfolder="${out-folder}"
+ basename="${ant.project.name}"
+ signed="true"
+ verbose="false">
+ <file path="${intermediate-dex}" />
+ <sourcefolder path="${source-folder}" />
+ <sourcefolder path="${common-folder}" />
+ <jarfolder path="${external-libs-folder}" />
+ <nativefolder path="${native-libs-folder}" />
+ </apkbuilder>
+ </target>
+
+ <!-- Package the application without signing it.
+ This allows for the application to be signed later with an official publishing key. -->
+ <target name="release" depends="dex, package-resources">
+ <apkbuilder
+ outfolder="${out-folder}"
+ basename="${ant.project.name}"
+ signed="false"
+ verbose="false">
+ <file path="${intermediate-dex}" />
+ <sourcefolder path="${source-folder}" />
+ <sourcefolder path="${common-folder}" />
+ <jarfolder path="${external-libs-folder}" />
+ <nativefolder path="${native-libs-folder}" />
+ </apkbuilder>
+ <echo>All generated packages need to be signed with jarsigner before they are published.</echo>
+ </target>
+
+ <!-- Install the package on the default emulator -->
+ <target name="install" depends="debug">
+ <echo>Installing ${out-debug-package} onto default emulator...</echo>
+ <exec executable="${adb}" failonerror="true">
+ <arg value="install" />
+ <arg path="${out-debug-package}" />
+ </exec>
+ </target>
+
+ <target name="reinstall" depends="debug">
+ <echo>Installing ${out-debug-package} onto default emulator...</echo>
+ <exec executable="${adb}" failonerror="true">
+ <arg value="install" />
+ <arg value="-r" />
+ <arg path="${out-debug-package}" />
+ </exec>
+ </target>
+
+ <!-- Uinstall the package from the default emulator -->
+ <target name="uninstall">
+ <echo>Uninstalling ${application-package} from the default emulator...</echo>
+ <exec executable="${adb}" failonerror="true">
+ <arg value="uninstall" />
+ <arg path="${application-package}" />
+ </exec>
+ </target>
+
+ <target name="help">
+ <!-- displays starts at col 13
+ | 13 80| -->
+ <echo>Android Ant Build. Available targets:</echo>
+ <echo> help: Displays this help.</echo>
+ <echo> debug: Builds the application and sign it with a debug key.</echo>
+ <echo> release: Builds the application. The generated apk file must be</echo>
+ <echo> signed before it is published.</echo>
+ <echo> install: Installs the debug package onto a running emulator or</echo>
+ <echo> device. This can only be used if the application has </echo>
+ <echo> not yet been installed.</echo>
+ <echo> reinstall: Installs the debug package on a running emulator or</echo>
+ <echo> device that already has the application.</echo>
+ <echo> The signatures must match.</echo>
+ <echo> uninstall: uninstall the application from a running emulator or</echo>
+ <echo> device.</echo>
+ </target>
+
+</project>
=======================================
--- /dev/null
+++ /branches/android/Android/default.properties Wed Jun 9 15:23:05
2010
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "build.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-2
=======================================
--- /dev/null
+++ /branches/android/Android/res/drawable/ndt.png Wed Jun 9 15:23:05
2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /branches/android/Android/res/layout/main.xml Wed Jun 9 15:23:05
2010
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+
+ <ProgressBar android:id="@+id/ProgressBar" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal"
+ android:layout_alignParentTop="true">
+ </ProgressBar>
+
+ <LinearLayout android:id="@+id/LowerFrame" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:layout_alignParentBottom="true"
+ android:orientation="horizontal">
+ <Button android:text="@string/start" android:id="@+id/ButtonStart"
+ android:layout_width="wrap_content" android:layout_weight="1"
+ android:layout_height="wrap_content">
+ </Button>
+ <Button android:text="@string/statistics" android:id="@+id/ButtonStatistics"
+ android:layout_width="wrap_content" android:layout_weight="1"
+ android:layout_height="wrap_content">
+ </Button>
+ <Button android:text="@string/about" android:id="@+id/ButtonAbout"
+ android:layout_width="wrap_content" android:layout_weight="1"
+ android:layout_height="wrap_content">
+ </Button>
+ <Button android:text="@string/options" android:id="@+id/ButtonOption"
+ android:layout_width="wrap_content" android:layout_weight="1"
+ android:layout_height="wrap_content">
+ </Button>
+ </LinearLayout>
+
+ <LinearLayout android:id="@+id/UpperFrame" android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:layout_weight="1"
+ android:layout_above="@+id/LowerFrame" android:layout_below="@+id/ProgressBar">
+ <TextView android:layout_width="fill_parent" android:layout_height="fill_parent"
+ android:id="@+id/TextViewMain" android:text="@string/hello"
+ android:gravity="bottom" android:scrollbars="vertical" />
+ </LinearLayout>
+</RelativeLayout>
=======================================
--- /dev/null
+++ /branches/android/Android/res/layout/servers.xml Wed Jun 9 15:23:05 2010
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="fill_parent" android:layout_height="fill_parent">
+ <RadioGroup android:layout_width="fill_parent"
+ android:layout_height="wrap_content" android:orientation="vertical"
+ android:id="@+id/servergroup">
+ <!-- Add RadioButtons here by program dynamically -->
+ </RadioGroup>
+ <LinearLayout android:orientation="horizontal"
+ android:layout_width="fill_parent" android:layout_height="wrap_content">
+ <Button android:layout_weight="1" android:layout_height="wrap_content"
+ android:layout_width="wrap_content" android:text="@string/save"
+ android:id="@+id/ButtonServerSave" />
+ </LinearLayout>
+ </LinearLayout>
+</ScrollView>
=======================================
--- /dev/null
+++ /branches/android/Android/res/layout/stats.xml Wed Jun 9 15:23:05
2010
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical" android:layout_width="fill_parent"
+ android:layout_height="wrap_content">
+ <LinearLayout android:orientation="vertical"
+ android:layout_width="fill_parent" android:layout_height="fill_parent">
+ <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
+ android:id="@+id/TextViewStatistics" android:text=""
+ android:scrollbars="vertical" android:gravity="top" />
+ <LinearLayout android:orientation="horizontal"
+ android:layout_width="fill_parent" android:layout_height="wrap_content">
+ <Button android:layout_weight="1" android:layout_height="wrap_content"
+ android:layout_width="wrap_content" android:text="@string/email"
+ android:id="@+id/ButtonEmail" />
+ </LinearLayout>
+ </LinearLayout>
+</ScrollView>
=======================================
--- /dev/null
+++ /branches/android/Android/res/values/strings.xml Wed Jun 9 15:23:05 2010
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="hello">NDT Mobile Client for Android Ready.</string>
+ <string name="app_name">NDT Mobile Client</string>
+ <string name="choice_server_title">Choose Testing Server</string>
+ <string name="exit">Exit</string>
+ <string name="about">About</string>
+ <string name="start">Start</string>
+ <string name="options">Options</string>
+ <string name="statistics">Statistics</string>
+ <string name="label_about_description">Copyright 2009 Google Inc.\n\nThis software is based in part on NDT: Copyright (c) 2003 University of Chicago.</string>
+ <string name="label_about_title">About NDT Mobile Client for Android</string>
+ <string name="close">Close</string>
+ <string name="save">Save</string>
+ <string name="email">E-Mail</string>
+ <string name="cancel">Cancel</string>
+ <string name="warning">Warning</string>
+ <string name="contents_warning">Server list error. Shutting down NDT Mobile Client.</string>
+ <string name="fail_tip">Test failed.</string>
+ <string name="serverlist_corrupted_tip">Server list corrupted, please contact the publisher.</string>
+ <string name="test_begins_at">Testing started at %1$s</string>
+ <string name="from_header">From:</string>
+ <string name="to_header">To:</string>
+ <string name="server_indicator">Server: %1$s</string>
+ <string name="host_indicator">Host: %1$s</string>
+ <string name="latitude_result">Latitude: %1$f</string>
+ <string name="longitude_result">Longitude: %1$f</string>
+ <string name="version_indicator">Version: %1$s</string>
+ <string name="default_server_indicator">Default server: %1$s</string>
+ <string name="network_type_indicator">NetworkType: %1$s</string>
+ <string name="changed_server">Changed testing server to: %1$s</string>
+ <string name="os_line">OS: Name = %1$s, Architecture = %2$s, Version = %3$s</string>
+ <string name="java_line">Java: Version = %1$s, Vendor = %2$s</string>
+ <string name="email_title">NDT Mobile Client for Android Result on %1$s</string>
+ <string name="intent_error">Intent Error.</string>
+ <string name="test_again">Press Start to test again.</string>
+</resources>
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/AndroidNdt.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,362 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.PowerManager;
+import android.text.method.ScrollingMovementMethod;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import java.util.Date;
+
+import net.measurementlab.ndt.NdtTests;
+import net.measurementlab.ndt.UiServices;
+
+/**
+ * UI Thread and Entry Point of NDT mobile client.
+ */
+public class AndroidNdt extends Activity {
+ private int serverNumber;
+ private int progress;
+ private String serverName;
+ private String serverHost;
+ private String mobileInfo;
+ private String statistics;
+ private Button buttonStart;
+ private Button buttonAbout;
+ private Button buttonStatistics;
+ private Button buttonOption;
+ private ProgressBar progressBar;
+ private TextView textViewMain;
+ private UiHandler uiHandler;
+ private PowerManager powerManager;
+ private PowerManager.WakeLock wakeLock;
+ private NetworkInfo networkInfo;
+ private UiServices uiServices;
+ private NdtLocation ndtLocation;
+
+ private class StartButtonListener implements OnClickListener {
+ public void onClick(View view) {
+ statistics = "";
+ Date date = new Date();
+ StringBuilder stringBuilder = new StringBuilder()
+ .append("\n")
+ .append(getString(R.string.test_begins_at, date.toString()))
+ .append("\n");
+ uiServices.appendString(stringBuilder.toString(), UiServices.MAIN_VIEW);
+ uiServices.appendString(stringBuilder.toString(), UiServices.STAT_VIEW);
+ stringBuilder = new StringBuilder()
+ .append("\n")
+ .append(getString(R.string.from_header))
+ .append(getSystemProperty())
+ .append("\n")
+ .append(mobileInfo)
+ .append("\n\n")
+ .append(getString(R.string.to_header))
+ .append("\n")
+ .append(getString(R.string.server_indicator, serverName))
+ .append("\n")
+ .append(getString(R.string.host_indicator, serverHost))
+ .append("\n");
+ uiServices.appendString(stringBuilder.toString(), UiServices.STAT_VIEW);
+ Thread netWorker = new Thread(new NdtTests(serverHost, uiServices, getNetworkType()));
+ netWorker.start();
+ }
+ }
+
+ private class StatisticsButtonListener implements OnClickListener {
+ public void onClick(View view) {
+ StringBuilder locationBuilder = new StringBuilder();
+ if (ndtLocation.location != null) {
+ locationBuilder
+ .append(getString(R.string.latitude_result, ndtLocation.location.getLatitude()))
+ .append("\n")
+ .append(getString(R.string.longitude_result, ndtLocation.location.getLongitude()));
+ }
+ Intent intent = new Intent(AndroidNdt.this, Statistics.class);
+ intent.putExtra(Constants.INTENT_STATISTICS, statistics);
+ intent.putExtra(Constants.INTENT_NETWORK, getNetworkType());
+ intent.putExtra(Constants.INTENT_LOCATION, locationBuilder.toString());
+ startActivityForResult(intent, Constants.ACTIVITY_STATISTICS);
+ }
+ }
+
+ private class AboutButtonListener implements OnClickListener {
+ Context contextActivity;
+
+ AboutButtonListener(Context context) {
+ contextActivity = context;
+ }
+
+ public void onClick(View view) {
+ AlertDialog.Builder builderAbout = new AlertDialog.Builder(contextActivity);
+ builderAbout.setTitle(R.string.label_about_title);
+ builderAbout.setPositiveButton(R.string.close, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ setResult(RESULT_OK);
+ }
+ });
+ builderAbout.setMessage(R.string.label_about_description);
+ builderAbout.create();
+ builderAbout.show();
+ }
+ }
+
+ private class OptionButtonListener implements OnClickListener {
+ public void onClick(View view) {
+ Intent intent = new Intent(AndroidNdt.this, SelectServer.class);
+ intent.putExtra(Constants.INTENT_SERVER_NO, serverNumber);
+ startActivityForResult(intent, Constants.ACTIVITY_OPTION);
+ }
+ }
+
+ /**
+ * Initializes the activity.
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+ checkServerListValid();
+ // Set the default server
+ serverNumber = Constants.DEFAULT_SERVER;
+ ndtLocation = new NdtLocation(this);
+ ndtLocation.startListen();
+ powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
+ ConnectivityManager connectivityManager =
+ (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
+ networkInfo = connectivityManager.getActiveNetworkInfo();
+ wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Network Testing");
+ serverName = Constants.SERVER_NAME[serverNumber];
+ serverHost = Constants.SERVER_HOST[serverNumber];
+ uiHandler = new UiHandler(Looper.myLooper());
+ uiServices = new AndroidUiServices(this, uiHandler);
+ textViewMain = (TextView) findViewById(R.id.TextViewMain);
+ textViewMain.setMovementMethod(ScrollingMovementMethod.getInstance());
+ textViewMain.setClickable(false);
+ textViewMain.setLongClickable(false);
+ textViewMain.append("\n" + getString(R.string.version_indicator, NdtTests.VERSION));
+ textViewMain.append("\n" + getString(R.string.default_server_indicator, serverName));
+ textViewMain.append("\n");
+ mobileInfo = getMobileProperty();
+ textViewMain.append(mobileInfo);
+ textViewMain.append("\n");
+ initComponents();
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (resultCode == RESULT_OK || requestCode == Constants.ACTIVITY_OPTION) {
+ if (data != null) {
+ serverNumber = data.getExtras().getInt(Constants.INTENT_SERVER_NO);
+ textViewMain.append("\n"
+ + getString(R.string.changed_server, Constants.SERVER_NAME[serverNumber]) + "\n");
+ serverName = Constants.SERVER_NAME[serverNumber];
+ serverHost = Constants.SERVER_HOST[serverNumber];
+ }
+ }
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ protected void onDestroy() {
+ Log.v(Constants.LOG_TAG, "onDestory");
+ if (wakeLock != null && wakeLock.isHeld()) {
+ wakeLock.release();
+ Log.v(Constants.LOG_TAG, "Release Wake Lock onDestroy");
+ }
+ super.onDestroy();
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ protected void onStart() {
+ Log.v(Constants.LOG_TAG, "onStart");
+ ndtLocation.startListen();
+ super.onStart();
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ protected void onStop() {
+ Log.v(Constants.LOG_TAG, "onStop");
+ ndtLocation.stopListen();
+ super.onStop();
+ }
+
+ /**
+ * Called when server length is invalid.
+ *
+ * @see Constants#NUMBER_OF_SERVERS
+ */
+ private void checkServerListValid() {
+ if ((Constants.SERVER_NAME.length != Constants.SERVER_HOST.length)
+ || (Constants.NUMBER_OF_SERVERS == 0)) {
+ Log.v(Constants.LOG_TAG, "Server list corrupted.");
+ Toast toast =
+ Toast.makeText(getApplicationContext(), R.string.serverlist_corrupted_tip,
+ Toast.LENGTH_SHORT);
+ toast.show();
+ finish();
+ }
+ }
+
+ /**
+ * Gets the system related properties.
+ *
+ * @return a string describing the OS and Java environment
+ */
+ private String getSystemProperty() {
+ String osName, osArch, osVer, javaVer, javaVendor;
+ osName = System.getProperty("os.name");
+ osArch = System.getProperty("os.arch");
+ osVer = System.getProperty("os.version");
+ javaVer = System.getProperty("java.version");
+ javaVendor = System.getProperty("java.vendor");
+ StringBuilder sb = new StringBuilder()
+ .append("\n")
+ .append(getString(R.string.os_line, osName, osArch, osVer))
+ .append("\n")
+ .append(getString(R.string.java_line, javaVer, javaVendor));
+ return sb.toString();
+ }
+
+ /**
+ * Gets the mobile device related properties.
+ *
+ * @return a string about location, network type (MOBILE or WIFI)
+ */
+ private String getMobileProperty() {
+ StringBuilder sb = new StringBuilder();
+ if (ndtLocation.location != null) {
+ Log.v(Constants.LOG_TAG, ndtLocation.location.toString());
+ sb.append(getString(R.string.latitude_result, ndtLocation.location.getLatitude()))
+ .append("\n")
+ .append(getString(R.string.longitude_result, ndtLocation.location.getLongitude()));
+ }
+ if (networkInfo != null) {
+ Log.v(Constants.LOG_TAG, networkInfo.toString());
+ sb.append("\n")
+ .append(getString(R.string.network_type_indicator, networkInfo.getTypeName()));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Initializes the components on main view.
+ */
+ private void initComponents() {
+ buttonStart = (Button) findViewById(R.id.ButtonStart);
+ buttonStart.setOnClickListener(new StartButtonListener());
+ buttonAbout = (Button) findViewById(R.id.ButtonAbout);
+ buttonAbout.setOnClickListener(new AboutButtonListener(this));
+ buttonOption = (Button) findViewById(R.id.ButtonOption);
+ buttonOption.setOnClickListener(new OptionButtonListener());
+ buttonStatistics = (Button) findViewById(R.id.ButtonStatistics);
+ buttonStatistics.setOnClickListener(new StatisticsButtonListener());
+ buttonStatistics.setEnabled(false);
+ progressBar = (ProgressBar) findViewById(R.id.ProgressBar);
+ progressBar.setVisibility(View.INVISIBLE);
+ progressBar.setIndeterminate(false);
+ }
+
+ /**
+ * Gets the type of the active network, networkInfo should be initialized before called this function.
+ *
+ * @return a string to describe user's network
+ * @see NdtTests#NETWORK_WIFI
+ * @see NdtTests#NETWORK_MOBILE
+ * @see NdtTests#NETWORK_WIRED
+ * @see NdtTests#NETWORK_UNKNOWN
+ */
+ private String getNetworkType() {
+ if (networkInfo != null) {
+ int networkType = networkInfo.getType();
+ switch (networkType) {
+ case ConnectivityManager.TYPE_MOBILE:
+ return NdtTests.NETWORK_MOBILE;
+ case ConnectivityManager.TYPE_WIFI:
+ return NdtTests.NETWORK_WIFI;
+ default:
+ return NdtTests.NETWORK_UNKNOWN;
+ }
+ } else {
+ return NdtTests.NETWORK_UNKNOWN;
+ }
+ }
+
+ public class UiHandler extends Handler {
+ public UiHandler(Looper looper) {
+ super(looper);
+ }
+
+ @Override
+ public void handleMessage(Message message) {
+ switch (message.what) {
+ case Constants.THREAD_MAIN_APPEND:
+ textViewMain.append(message.obj.toString());
+ break;
+ case Constants.THREAD_STAT_APPEND:
+ statistics += message.obj.toString();
+ break;
+ case Constants.THREAD_BEGIN_TEST:
+ Log.v(Constants.LOG_TAG, "Begin the test");
+ progress = 0;
+ buttonStart.setEnabled(false);
+ buttonAbout.setEnabled(false);
+ buttonStatistics.setEnabled(false);
+ buttonOption.setEnabled(false);
+ progressBar.setVisibility(View.VISIBLE);
+ progressBar.setProgress(progress);
+ progressBar.setMax(UiServices.TEST_STEPS);
+ if (wakeLock.isHeld() == false) {
+ wakeLock.acquire();
+ Log.v(Constants.LOG_TAG, "wakeLock acquired");
+ }
+ break;
+ case Constants.THREAD_END_TEST:
+ Log.v(Constants.LOG_TAG, "End the test");
+ textViewMain.append("\n" + getString(R.string.test_again) + "\n");
+ statistics += "\n";
+ buttonStart.setEnabled(true);
+ buttonAbout.setEnabled(true);
+ buttonStatistics.setEnabled(true);
+ buttonOption.setEnabled(true);
+ progressBar.setVisibility(View.INVISIBLE);
+ if (wakeLock.isHeld()) {
+ wakeLock.release();
+ Log.v(Constants.LOG_TAG, "wakeLock released");
+ }
+ break;
+ case Constants.THREAD_ADD_PROGRESS:
+ progressBar.setProgress(progressBar.getProgress() + 1);
+ break;
+ }
+ }
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/AndroidUiServices.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,148 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import net.measurementlab.ndt.UiServices;
+
+/**
+ * Implementation of UiServices for Android.
+ */
+public class AndroidUiServices implements UiServices {
+ private Message message;
+ private Handler handler;
+ private Context context;
+
+ /**
+ * Constructor to get the handler from Android's UI Thread.
+ *
+ * @param handler handler from main activity for dispatching messages
+ */
+ public AndroidUiServices(Context context, Handler handler) {
+ this.handler = handler;
+ this.context = context;
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void appendString(String str, int objectId) {
+ switch (objectId) {
+ case MAIN_VIEW:
+ message = handler.obtainMessage(Constants.THREAD_MAIN_APPEND, str);
+ handler.sendMessage(message);
+ break;
+ case STAT_VIEW:
+ message = handler.obtainMessage(Constants.THREAD_STAT_APPEND, str);
+ handler.sendMessage(message);
+ break;
+ case DIAG_VIEW:
+ // Diagnosis view is redirected to Statistics view on Android.
+ message = handler.obtainMessage(Constants.THREAD_STAT_APPEND, str);
+ handler.sendMessage(message);
+ break;
+ case DEBUG_VIEW:
+ // We don't have diagnosis view here, just ignore this action.
+ default:
+ break;
+ }
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void incrementProgress() {
+ message = handler.obtainMessage(Constants.THREAD_ADD_PROGRESS);
+ handler.sendMessage(message);
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void onBeginTest() {
+ message = handler.obtainMessage(Constants.THREAD_BEGIN_TEST);
+ handler.sendMessage(message);
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void onEndTest() {
+ message = handler.obtainMessage(Constants.THREAD_END_TEST);
+ handler.sendMessage(message);
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void onFailure(String errorMessage) {
+ String str = "\n" + context.getString(R.string.fail_tip) + "\n";
+ appendString(str, UiServices.MAIN_VIEW);
+ appendString(str, STAT_VIEW);
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void logError(String str) {
+ Log.e(Constants.LOG_TAG, str);
+ }
+
+ // Unimplemented (and unnecessary Applet-specific) methods below
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void updateStatus(String status) {
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void updateStatusPanel(String status) {
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void onLoginSent() {
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public void onPacketQueuingDetected() {
+ }
+
+ /**
+ *
{@inheritDoc}
+ */
+ @Override
+ public boolean wantToStop() {
+ return false;
+ }
+
+ @Override
+ public void setVariable(String name, int value) {
+ }
+
+ @Override
+ public void setVariable(String name, double value) {
+ }
+
+ @Override
+ public void setVariable(String name, Object value) {
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/Constants.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,63 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+/**
+ * Definition for constant values used in ndt mobile.
+ */
+public class Constants {
+ /**
+ * Maximum test steps for ProgressBar setting.
+ */
+ public static final int TEST_STEPS = 7;
+
+ /**
+ * TAG constant for logging.
+ */
+ public static final String LOG_TAG = "NDT";
+
+ // Messages submitted from working thread to UI
+ public static final int THREAD_MAIN_APPEND = 0;
+ public static final int THREAD_STAT_APPEND = 1;
+ public static final int THREAD_BEGIN_TEST = 2;
+ public static final int THREAD_END_TEST = 3;
+ public static final int THREAD_ADD_PROGRESS = 4;
+
+ // ID of Activities
+ public static final int ACTIVITY_OPTION = 0;
+ public static final int ACTIVITY_STATISTICS = 1;
+
+ // Intents ID
+ public static final String INTENT_SERVER_NO = "serverno";
+ public static final String INTENT_STATISTICS = "statistics";
+ public static final String INTENT_LOCATION = "location";
+ public static final String INTENT_NETWORK = "network";
+
+ // Options
+ // See newest server list here: http://www.measurementlab.net/measurement-lab-tools#ndt
+ // All the data here should be kept sync with the published list
+ // In future server list should be downloaded from some list servers dynamically.
+ public static final int DEFAULT_SERVER = 0;
+ public static final String SERVER_NAME[] =
+ {"Mountain View, California", "Los Angeles, California", "Seattle, Washington",
+ "Dallas, Texas", "Chicago, Illinois", "Atlanta, Georgia", "Miami, Florida",
+ "New York City, New York #1", "New York City, New York #2", "London, United Kingdom",
+ "Paris, France", "Amsterdam, The Netherlands #1", "Athens, Greece"};
+ public static final String SERVER_HOST[] =
+ {"ndt.iupui.nuq01.measurement-lab.org", "ndt.iupui.lax01.measurement-lab.org",
+ "ndt.iupui.sea01.measurement-lab.org",
"ndt.iupui.dfw01.measurement-lab.org",
+ "ndt.iupui.ord01.measurement-lab.org",
"ndt.iupui.atl01.measurement-lab.org",
+ "ndt.iupui.mia01.measurement-lab.org",
"ndt.iupui.lga01.measurement-lab.org",
+ "ndt.iupui.lga02.measurement-lab.org",
"ndt.iupui.lhr01.measurement-lab.org",
+ "ndt.iupui.par01.measurement-lab.org",
"ndt.iupui.ams01.measurement-lab.org",
+ "ndt.iupui.ath01.measurement-lab.org"};
+
+ /**
+ * Number of servers. All the arrays should have the same length.
+ */
+ public static final int NUMBER_OF_SERVERS = SERVER_NAME.length;
+
+ private Constants() {
+ // private constructor to make sure it can't be instantiated
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/NdtLocation.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,68 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+import android.content.Context;
+import android.location.Criteria;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+
+/**
+ * Handle the location related functions and listeners.
+ */
+public class NdtLocation implements LocationListener {
+ /**
+ * Location variable, publicly accessible to provide access to geographic data.
+ */
+ public Location location;
+ private LocationManager locationManager;
+ private Criteria criteria;
+
+ /**
+ * Passes context to this class to initialize members.
+ *
+ * @param context context which is currently running
+ */
+ public NdtLocation(Context context) {
+ locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
+ criteria = new Criteria();
+ criteria.setAccuracy(Criteria.ACCURACY_FINE);
+ criteria.setCostAllowed(true);
+ criteria.setPowerRequirement(Criteria.POWER_LOW);
+ }
+
+ public void onLocationChanged(Location location) {
+ this.location = location;
+ }
+
+ public void onProviderDisabled(String provider) {
+ // Don't care when the provider is disabled.
+ }
+
+ public void onProviderEnabled(String provider) {
+ // Don't care when the provider is enabled.
+ }
+
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ // Don't care when the provider is temporarily unavailable.
+ }
+
+ /**
+ * Stops requesting the location update.
+ */
+ public void stopListen() {
+ locationManager.removeUpdates(this);
+ }
+
+ /**
+ * Begins to request the location update.
+ */
+ public void startListen() {
+ locationManager.requestLocationUpdates(locationManager.getBestProvider(criteria, true), 0, 0,
+ this);
+ location =
+ locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, true));
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/SelectServer.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,67 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.widget.Button;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
+
+/**
+ * User select the testing server here and pass the related value back to the main activity.
+ */
+public class SelectServer extends Activity implements RadioGroup.OnCheckedChangeListener {
+ private int serverNo = 0;
+ private RadioButton server[] = new RadioButton[Constants.NUMBER_OF_SERVERS];
+ private Button buttonOptionSave;
+ private RadioGroup radioGroup;
+
+ /**
+ * Reads the server list from Constants class. Records the user's choice and
+ * send it back to the main activity.
+ */
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.servers);
+ Bundle serverInfo = getIntent().getExtras();
+ if (serverInfo != null) {
+ serverNo = serverInfo.getInt(Constants.INTENT_SERVER_NO);
+ Log.v("NDT", "Passed Into Option: " + serverNo);
+ }
+ radioGroup = (RadioGroup) findViewById(R.id.servergroup);
+ buttonOptionSave = (Button) findViewById(R.id.ButtonServerSave);
+ for (int i = 0; i < Constants.NUMBER_OF_SERVERS; i++) {
+ server[i] = new RadioButton(this);
+ server[i].setText(Constants.SERVER_NAME[i]);
+ radioGroup.addView(server[i]);
+ }
+ server[serverNo].setChecked(true);
+ radioGroup.setOnCheckedChangeListener(this);
+ buttonOptionSave.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ Intent intentReturn = new Intent();
+ intentReturn.putExtra(Constants.INTENT_SERVER_NO, serverNo);
+ setResult(RESULT_OK, intentReturn);
+ finish();
+ }
+ });
+ }
+
+ /**
+ * Responds to the change in selection.
+ */
+ @Override
+ public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
+ for (int i = 0; i < Constants.NUMBER_OF_SERVERS; i++) {
+ if (server[i].getId() == checkedId) {
+ serverNo = i;
+ }
+ }
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/Android/src/net/measurementlab/ndt/Statistics.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,71 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+import java.util.Date;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.TextView;
+import android.widget.Toast;
+
+/**
+ * Shows the testing report to the user, email application also could be called here.
+ */
+public class Statistics extends Activity implements OnClickListener {
+ private Button buttonEmail;
+ private String statistics;
+ private String location;
+ private String network;
+ private Date date;
+ private TextView textViewStatistics;
+
+ /**
+ * Gets results from the main activity and shows them to the user.
+ */
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ setContentView(R.layout.stats);
+ Bundle statsInfo = getIntent().getExtras();
+ date = new Date();
+ buttonEmail = (Button) findViewById(R.id.ButtonEmail);
+ buttonEmail.setOnClickListener(this);
+ if (statsInfo != null) {
+ statistics = statsInfo.getString(Constants.INTENT_STATISTICS);
+ location = statsInfo.getString(Constants.INTENT_LOCATION);
+ network = statsInfo.getString(Constants.INTENT_NETWORK);
+ } else {
+ Toast toast =
+ Toast.makeText(getApplicationContext(), R.string.intent_error, Toast.LENGTH_SHORT);
+ toast.show();
+ finish();
+ }
+ textViewStatistics = (TextView) findViewById(R.id.TextViewStatistics);
+ textViewStatistics.setText(statistics);
+ }
+
+ /**
+ * Invokes the email application. Does not work on the emulator.
+ */
+ @Override
+ public void onClick(View view) {
+ Intent intentMail = new Intent(Intent.ACTION_SEND);
+ String networkTypeResult = getString(R.string.network_type_indicator, network);
+ StringBuilder mail = new StringBuilder()
+ .append(statistics)
+ .append("\n")
+ .append(location)
+ .append("\n")
+ .append(networkTypeResult);
+ intentMail.putExtra(Intent.EXTRA_TEXT, mail.toString());
+ String emailTitle = getString(R.string.email_title, date.toString());
+ intentMail.putExtra(Intent.EXTRA_SUBJECT, emailTitle);
+ intentMail.setType("plain/text");
+ startActivity(Intent.createChooser(intentMail, "Choose Email Client"));
+ }
+}
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_ca_ES.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,220 @@
+10gbps = subxarxa 10 Gbps 10 Gigabit Ethernet/OC-192
+10mbps = subxarxa 10 Mbps Ethernet
+10mins = 10 min
+12hours = 12 hores
+1day = 1 dia
+1gbps = subxarxa 1.0 Gbps Gigabit Ethernet
+1min = 1 min
+2.4gbps = subxarxa 2.4 Gbps OC-48
+2hours = 2 hores
+30mins = 30 min
+45mbps = subxarxa 45 Mbps T3/DS3
+5mins = 5 min
+622mbps = subxarxa a 622 Mbps OC-12
+and = and
+architecture = Arquitectura
+bytes = Bytes
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: Cua de paquets detectada
+c2sThroughput = C2S throughput
+c2sThroughputFailed = Test de C2S throughput FALLIT!
+cabledsl = Cable/DSL modem
+cablesNok = Advert\u00e8ncia: Excessius errors de xarxa, revisar cable(s) de xarxa
+cablesOk = Trobat bon(s) cable(s) de xarxa
+checkingFirewalls = Buscant Firewalls . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = Buscant Caixes Intermitjes (Middleboxes) . . . . . . . . . . . . . . . . . .
+clickStart = Fes click a COMEN\u00e7AR per a comen\u00e7ar la prova
+clickStart2 = Fes click a COMEN\u00e7AR per a tornar a fer la prova
+client = Client
+client2 = Client
+clientAcksReport = Client Confirma l'enlla\u00e7 reportat \u00e9s
+clientDataReports = Dades de Client reporten que l'enlla\u00e7 \u00e9s
+clientInfo = Detalls del sistema client
+clientIpModified = Informaci\u00f3: El NAT (Network Address Translation) est\u00e0 modificant l'adre\u00e7a IP del client
+clientIpNotFound = No es troba l'adre\u00e7a del client. Per a usuaris d'Internet Explorer, modifiqui els par\u00e0metres de Java\n Click a Eines - Opcions d'Internet - Seguretat - Nivell personalitzat, trobi la l\u00ednia\n Microsoft VM - Java Permissions i faci click a personalitzar\ Editar permisos - Acc\u00e9s a totes les Adreces de xarxa, click a Habilitar i desar els canvis.
+clientIpPreserved = Les Adreces IP de servidor son conservades Extrem-a-Extrem
+clientSays = per\u00f2 el Client diu
+close = Tancar
+comments = Comentaris
+congestNo = No s'ha trobat congesti\u00f3 de xarxa
+congestYes = Informaci\u00f3: El throughput \u00e9s limitat per altre tr\u00e0fic de xarxa
+connIdle = La connexi\u00f3 estaba aturada
+connStalled = La connexi\u00f3 s'ha pausat
+connected = Connectat a:
+connectedTo = s'ha connectat a:
+copy = C\u00f2pia
+defaultTests = Proves per defecte
+delayBetweenTests = Retard entre proves
+detailedStats = Estad\u00edstiques detallades
+dialup = Modem telef\u00f2nic
+dialup2 = Trucada
+done = Fet.
+done2 = Tcpbw100 fet
+dupAcksIn = es reben ack's duplicats
+duplexFullHalf = Alarma: Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
+duplexHalfFull = Alarma: Condici\u00f3 doble no concordant detectada Switch=half i Host=full
+duplexNok = Advert\u00e8ncia: Condici\u00f3 doble antiga no concordant antiga
+duplexOk = Operaci\u00f3 normal trobada (Normal duplex operation found.)
+endOfEmail = Final del missatge de Correu electr\u00f2nic
+excLoss = Exc\u00e9s de p\u00e8rdua de paquets est\u00e0 impactant al rendiment, prova la funci\u00f3 d'autonegociaci\u00f3 entre el teu PC i el switch de xarxa
+excessiveErrors = Alarma: Excessius errors, revisa el(s) cable(s) de xarxa.
+firewallNo = no est\u00e0 darrere un firewall. [Conexi\u00f3 al port ef\u00edmer correcte]
+firewallYes = est\u00e0 probablement darrere un firewall. [Conexi\u00f3 al port ef\u00edmer ha fallat]
+flowControlLimits = El control de fluxe basat en xarxa limita el throughput a
+found100mbps = Trobat enlla\u00e7 de 100 Mbps FastEthernet.
+found10gbps = Trobat enlla\u00e7 de 10 Gbps 10 GigEthernet/OC-192.
+found10mbps = Trobat enlla\u00e7 de 10 Mbps Ethernet.
+found1gbps = Trobat enlla\u00e7 de 1 Gbps GigabitEthernet.
+found2.4gbps = Trobat enlla\u00e7 de 2.4 Gbps OC-48.
+found45mbps = Trobat enlla\u00e7 de 45 Mbps T3/DS3.
+found622mbps = Trobat enlla\u00e7 de 622 Mbps OC-12.
+foundDialup = Trobat enlla\u00e7 de Dial-up modem.
+foundDsl = Trobat enlla\u00e7 de Cable modem/DSL/T1.
+fullDuplex = subxaxarxa Full duplex Fast Ethernet
+general = General
+generatingReport = Generant informe de problemes: Aquest informe s'enviar\u00e0 per e-mail a la persona que especifiquis
+getWeb100Var = Obt\u00e9 les variables WEB100
+halfDuplex = subxarxa Half duplex Fast Ethernet
+id = Eina de diagn\u00f2stic de xara TCP/Web100
+immediate = immediat
+inboundTest = Test d'entrada Tcpbw100...
+inboundWrongMessage = Test de throughput C2S: Rebut un tipus de missatge erroni
+incompatibleVersion = N\u00famero de versi\u00f3 incompatible
+incrRxBuf = Augmentant el valor del buffer de recepci\u00f3 del client
+incrTxBuf = Augmentant el buffer de sortida del servidor NDT
+information = Informaci\u00f3
+initialization = Inicialitzant...
+insufficient = No es disposa de prou dades per a determinar el tipus d'enlla\u00e7.
+invokingMailtoFunction = Invocant funci\u00f3 Mailto Tcpbw100
+ipProtocol = Protocol IP
+ipcFail = Fallen les comunicacions entre processos, tipus d'enlla\u00e7 desconegut.
+usingIpv4 = -- Utilitzant adre\u00e7a IPv4
+usingIpv6 = -- Utilitzant adre\u00e7a IPv6
+javaData = Dades Java
+kbyteBufferLimits = KByte buffer que limita el throughput a
+limitNet = Xarxa limitada
+limitRx = Receptor limitat
+limitTx = Emissor limitat
+linkFullDpx = Enlla\u00e7 establert al mode Full Duplex
+linkHalfDpx = Enlla\u00e7 establert al mode Half Duplex
+loggingWrongMessage = Logant al servidor: Es rep un tipus de missatge erroni.
+lookupError = Incapa\u00e7 d'obtenir la adre\u00e7a IP remota
+mboxWrongMessage = Test intermig: Rebut tipus de missatge erroni
+middlebox = Middlebox
+middleboxFail = El servidor ha fallat mentre es provaba la middlebox
+middleboxFail2 = test Middlebox FALLA!
+middleboxModifyingMss = Informaci\u00f3: La middlebox de xarxa est\u00e0 modificant la variable MSS
+middleboxTest = Test de Middlebox Tcpbw100...
+moreDetails = M\u00e9s detalls...
+name = Nom
+ndtServerHas = El servidor NDT t\u00e9 un
+noPktLoss1 = No hi ha p\u00e8rdua de paquets
+noPktLoss2 = No s'aprecia cap p\u00e8rdua de paquets
+numberOfTests = Nombre de proves
+of = de
+off = OFF
+ok = OK
+oldDuplexMismatch = "Advert\u00e8ncia: Es detecta antiga condici\u00f3 doble no concordant"
+on = ON
+ooOrder = per\u00f2 els paquets han arribat desordenats
+options = Opcions
+osData = dades del SO:
+otherClient = S'est\u00e0 servint un altre client, la seva prova comen\u00e7ar\u00e0 en
+otherTraffic = Informaci\u00f3: L'enlla\u00e7 de xarxa est\u00e0 congestionat per algun altre tr\u00e0fic
+outboundTest = Test de sortida Tcpbw100...
+outboundWrongMessage = Test de throughput C2S: Es rep un tipus de missatge erroni
+packetQueuing = Posant paquets en cua
+packetQueuingInfo = TCP (Transmission Control Protocol) transfereix dades entre dos\n equips d'internet. Autom\u00e0ticament detecta i es recupera d'errors i p\u00e8rdues./n TCP utilitza buffers per a proporcionar aquesta confiabilitat. Adem\u00e9s,\n els switch i routers
+utilitzen buffers per aquells casos en que m\u00faltiples enlla\u00e7os d'entrada\n envien paquets a un \u00fanic enlla\u00e7 de sortida o si varien les velocitats de cada enlla\u00e7\n (FastEthernet a modem DSL).\n\n El servidor NDT genera i envia 10 segons de dades al client. En\n alguns casos el servidor pot generar les dades m\u00e9s de pressa del que pot enviar els paquets a la xarxa\n (p.ex., una CPU a 2 GHz enviant a un client conectat a una DSL).\n Quan passa aix\u00f2, alguns paquets es poden quedar a la cua de sortida /n quan s'acaba el temporitzador de 10 segons.\n El TCP continuar\u00e0 enviant automaticament aquests missatges a la cua i el client continuar\u00e0 acceptant-los i processant-los.\n Aix\u00f2 provoca que una prova duri m\u00e9s del que s'espera.\n\n Aquesta condici\u00f3 s'ha produït durant aquesta prova. /n No es requereix cap acci\u00f3 per a resoldre aquesta situaci\u00f3.
+packetSizePreserved = La mida del paquet \u00e9s prefixada Extrem-a-Extrem
+packetsize = la mida de paquet
+pc = PC
+pctOfTime = % del temps
+performedTests = Proves realitzades
+pktsRetrans = Paquets retransmesos
+possibleDuplexFullHalf = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
+possibleDuplexHalfFull = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
+possibleDuplexHalfFullWarning = Advert\u00e8ncia: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
+preferIPv6 = prefereix IPv6
+printDetailedStats = Imprimir Estad\u00edstiques detallades
+protocolError = Error de Protocol! S'esperava 'prepare', s'obt\u00e9: 0x
+qSeen = Test de throughput: Detectat encuament de paquets
+ready = Tcpbw100 llest
+receiveBufferShouldBe = Informaci\u00f3: El buffer de recepci\u00f3 hauria de ser
+receiving = Rebent resultats...
+reportProblem = Informar el problema
+resultsParseError = Error en transformar els resultats del test!
+resultsTimeout = Alerta! Time-out al client mentre es llegien dades, (possible duplex mismatch exists)
+resultsWrongMessage = Resultats del test: S'ha rebut un tipus de missatge incorrecte
+rtt = RTT
+rttFail = L'algorisme del link de detecci\u00f3 ha fallat degut a excessius temps d'anada i tornada (Round trip times).
+runningInboundTest = executant test d'entrada de 10s (server-a-client [S2C]) . . . . . .
+runningOutboundTest = executant test de sortida de 10s (client-a-server [C2S]) . . . . .
+s2c = S2C
+s2cPacketQueuingDetected = [S2C]: Encuament de paquets detectat
+s2cThroughput = Throughput S2C
+s2cThroughputFailed = El test de throughput S2C ha FALLAT!
+sackReceived = Blocs SACK rebuts
+scalingFactors = Factors d'Escala
+seconds = segons
+server = Servidor
+serverAcksReport = El servidor confirma que l'enlla\u00e7 reportat \u00e9s
+serverFault = Fallida de Servidor: Error desconegut. Torneu-ho a provar m\u00e9s tard, si us plau.
+serverBusy = Servidor Ocupat: Massa clients esperant a la cua del servidor. Torneu-ho a provar m\u00e9s tard, si us plau.
+serverBusy15s = Servidor Ocupat: Esperi 15 segons per a la finalitzaci\u00f3 del test anterior.
+serverBusy30s = Servidor Ocupat: Esperi 30 segons per a la finalitzaci\u00f3 del test anterior.
+serverBusy60s = Servidor Ocupat: Esperi 60 segons per a la finalitzaci\u00f3 del test anterior.
+serverDataReports = Les dades del servidor indiquen que l'enlla\u00e7 \u00e9s
+serverFail = El servidor ha fallat mentre es rebien dades
+serverIpModified = Informaci\u00f3: El Network Address Translation (NAT) est\u00e0 modificant l'adre\u00e7a IP del client
+serverIpPreserved = L'adre\u00e7a IP del servidor es mant\u00e9 Extrem-a-Extrem
+serverNotRunning = Proc\u00e9s del servidor no funcionant: Arrenqui el proc\u00e9s web100srv al servidor remot.
+serverSays = El servidor diu
+sfwFail = Test de firewall simple FALLA!
+sfwSocketFail = Simple firewall test: Cannot create listen socket
+sfwTest = Simple firewall test...
+sfwWrongMessage = Test de firewall simple: S'ha rebut un missatge erroni.
+showOptions = Mostra les opcions
+simpleFirewall = Firewall simple
+sleep10m = Dormint per 10 mins...
+sleep1m = Dormint per 1 min...
+sleep30m = Dormint per 30 mins...
+sleep5m = Dormint per 5 mins...
+sleep12h = Dormint per 12 hores...
+sleep1d = Dormint per 1 d\u00eda...
+sleep2h = Dormint per 2 hores...
+start = COMEN\u00e7A
+startingTest = Comen\u00e7ant test
+statistics = Estad\u00edstiques
+stop = ATURA
+stopped = Les proves han estat aturades!
+stopping = Aturant...
+systemFault = Fallada de sistema
+test = Prova
+testsuiteWrongMessage = Negociant s\u00e8rie de proves: S'ha rebut un missatge erroni.
+theSlowestLink = El link m\u00e9s lent al cam\u00ed extrem a extrem \u00e9s un
+theoreticalLimit = El l\u00edmit te\u00f2ric de xarxa \u00e9s
+thisConnIs = Aquesta connexi\u00f3 \u00e9s
+timesPktLoss = temps degut a p\u00e8rdua de paquets
+toMaximizeThroughput = kbytes per a maximitzar el cabdal (throughput)
+troubleReportFrom = Informe de problemes de NDT a
+unableToDetectBottleneck = El servidor no pot determinar el tipus d'enlla\u00e7 que provoca el coll d'ampolla.
+unableToObtainIP = No es possible determinar la adre\u00e7a IP local
+unknownID = ID de test desconegut
+unknownServer = Servidor desconegut
+unsupportedClient = Informaci\u00f3: El servidor no suporta aquest client de l\u00ednia de comandes
+vendor = Fabricant
+version = Versi\u00f3
+versionWrongMessage = Negociant la versi\u00f3 de NDT: S'ha rebut un missatge erroni.
+web100Details = An\u00e0lisi detallat Web100
+web100KernelVar = Variables de Kernel WEB100
+web100Stats = Estad\u00edstiques WEB100 habilitades
+web100Var = Variables Web100
+web100rtt = Web100 informa el temps d'anada i tornada (RTT)
+web100tcpOpts = Web100 informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
+willImprove = Millorar\u00e0 el funcionament
+workstation = Estaci\u00f3 de treball
+your = El seu
+yourPcHas = El seu PC/Equip de treball t\u00e9 un
+connectingTo = Connectant a
+toRunTest = executar prova
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_en_US.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,219 @@
+10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
+10mbps = 10 Mbps Ethernet subnet
+10mins = 10 mins
+12hours = 12 hours
+1day = 1 day
+1gbps = 1.0 Gbps Gigabit Ethernet subnet
+1min = 1 min
+2.4gbps = 2.4 Gbps OC-48 subnet
+2hours = 2 hours
+30mins = 30 mins
+45mbps = 45 Mbps T3/DS3 subnet
+5mins = 5 mins
+622mbps = a 622 Mbps OC-12 subnet
+and = and
+architecture = Architecture
+bytes = Bytes
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: Packet queueing detected
+c2sThroughput = C2S throughput
+c2sThroughputFailed = C2S throughput test FAILED!
+cabledsl = Cable/DSL modem
+cablesNok = Warning: excessive network errors, check network cable(s)
+cablesOk = Good network cable(s) found
+checkingFirewalls = Checking for firewalls . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = Checking for Middleboxes . . . . . . . . . . . . . . . . . .
+clickStart = Click START to start the test
+clickStart2 = Click START to re-test
+client = Client
+client2 = Client
+clientAcksReport = Client Acks report link is
+clientDataReports = Client Data reports link is
+clientInfo = Client System Details
+clientIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
+clientIpNotFound = Client IP address not found. For IE users, modify the Java parameters\n click Tools - Internet Options - Security - Custom Level, scroll down to\n Microsoft VM - Java permissions and click Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, click Eanble and save changes
+clientIpPreserved = Server IP addresses are preserved End-to-End
+clientSays = but Client says
+close = Close
+comments = Comments
+congestNo = No network congestion discovered.
+congestYes = Information: throughput is limited by other network traffic.
+connIdle = The connection was idle
+connStalled = The connection stalled
+connected = Connected to:
+connectedTo = is connected to a
+copy = Copy
+defaultTests = Default tests
+delayBetweenTests = Delay between tests
+detailedStats = Detailed Statistics
+dialup = Dial-up Modem
+dialup2 = Dial-up
+done = Done.
+done2 = Tcpbw100 done
+dupAcksIn = duplicate acks received
+duplexFullHalf = Alarm: Duplex Mismatch condition detected Switch=Full and Host=half
+duplexHalfFull = Alarm: Duplex Mismatch condition detected Switch=half and Host=full
+duplexNok = Warning: Old Duplex mismatch condition detected:
+duplexOk = Normal duplex operation found.
+endOfEmail = End Of Email Message
+excLoss = Excessive packet loss is impacting your performance, check the auto-negotiate function on your local PC and network switch
+excessiveErrors = Alarm: Excessive errors, check network cable(s).
+firewallNo = is not behind a firewall. [Connection to the ephemeral port was successful]
+firewallYes = is probably behind a firewall. [Connection to the ephemeral port failed]
+flowControlLimits = The network based flow control limits the throughput to
+found100mbps = 100 Mbps FastEthernet link found.
+found10gbps = 10 Gbps 10 GigEthernet/OC-192 link found.
+found10mbps = 10 Mbps Ethernet link found.
+found1gbps = 1 Gbps GigabitEthernet link found.
+found2.4gbps = 2.4 Gbps OC-48 link found.
+found45mbps = 45 Mbps T3/DS3 link found.
+found622mbps = 622 Mbps OC-12 link found.
+foundDialup = Dial-up modem link found.
+foundDsl = Cable modem/DSL/T1 link found.
+fullDuplex = Full duplex Fast Ethernet subnet
+general = General
+generatingReport = Generating Trouble Report: This report will be emailed to the person you specify
+getWeb100Var = Get WEB100 Variables
+halfDuplex = Half duplex Fast Ethernet subnet
+id = TCP/Web100 Network Diagnostic Tool
+immediate = immediate
+inboundTest = Tcpbw100 inbound test...
+inboundWrongMessage = C2S throughput test: Received wrong type of the message
+incompatibleVersion = Incompatible version number
+incrRxBuf = Increasing the the client's receive buffer
+incrTxBuf = Increasing the NDT server's send buffer
+information = Information
+initialization = Initialization...
+insufficient = Insufficent data collected to determine link type.
+invokingMailtoFunction = Tcpbw100 Invoking Mailto function
+ipProtocol = IP protocol
+ipcFail = Interprocess communications failed, unknown link type.
+usingIpv4 = -- Using IPv4 address
+usingIpv6 = -- Using IPv6 address
+javaData = Java data
+kbyteBufferLimits = KByte buffer which limits the throughput to
+limitNet = network limited
+limitRx = receiver limited
+limitTx = sender limited
+linkFullDpx = Link set to Full Duplex mode
+linkHalfDpx = Link set to Half Duplex mode
+loggingWrongMessage = Logging to server: Received wrong type of the message
+lookupError = Unable to obtain remote IP address
+mboxWrongMessage = Middlebox test: Received wrong type of the message
+middlebox = Middlebox
+middleboxFail = Server Failed while middlebox testing
+middleboxFail2 = Middlebox test FAILED!
+middleboxModifyingMss = Information: Network Middlebox is modifying MSS variable
+middleboxTest = Tcpbw100 Middlebox test...
+moreDetails = More Details...
+name = Name
+ndtServerHas = The NDT server has a
+noPktLoss1 = No packet loss
+noPktLoss2 = No packet loss was observed
+numberOfTests = Number of tests
+of = of
+off = OFF
+ok = OK
+oldDuplexMismatch = "Warning: Old Duplex mismatch condition detected: "
+on = ON
+ooOrder = but packets arrived out-of-order
+options = Options
+osData = OS data:
+otherClient = Another client is currently being served, your test will begin within
+otherTraffic = Information: Other network traffic is congesting the link
+outboundTest = Tcpbw100 outbound test...
+outboundWrongMessage = C2S throughput test: Received wrong type of the message
+packetQueuing = Packet queuing
+packetQueuingInfo = TCP (Transmission Control Protocol) reliably transfers data between two\n Internet hosts. It automatically detects and recovers from errors and\n losses. TCP uses buffers to provide this reliability. In addition,\n switches and routers use buffers to handle cases where multiple input\n links send packets to a single output link or link speeds change\n (FastEthernet to DSL modem).\n\n The NDT server generates and sends 10 seconds of data to the client. In\n some cases the server can generate data faster than it can send packets\n into the network (e.g., a 2 GHz CPU sending to a DSL connected client).\n When this happens, some packets may remain in the server output queue\n when the 10 second timer expires. TCP will automatically continue to\n send these queued packets and the client will continue to accept and\n process these incoming packets. This will result in the client test\n running longer than expected.\n\n This condition has occurred during this test. No action is required to\n resolve this issue.
+packetSizePreserved = Packet size is preserved End-to-End
+packetsize = the Packet size
+pc = PC
+pctOfTime = % of the time
+performedTests = Performed tests
+pktsRetrans = packets retransmitted
+possibleDuplexFullHalf = Alarm: Possible Duplex Mismatch condition detected Switch=Full and Host=half
+possibleDuplexHalfFull = Alarm: Possible Duplex Mismatch condition detected Switch=half and Host=full
+possibleDuplexHalfFullWarning = Warning: Possible Duplex Mismatch condition detected Switch=half and Host=full
+preferIPv6 = prefer IPv6
+printDetailedStats = Print Detailed Statistics
+protocolError = Protocol error! Expected 'prepare', got: 0x
+qSeen = throughput test: Packet queuing detected
+ready = Tcpbw100 ready
+receiveBufferShouldBe = Information: The receive buffer should be
+receiving = Receiving results...
+reportProblem = Report problem
+resultsParseError = Error parsing test results!
+resultsTimeout = Warning! Client time-out while reading data, possible duplex mismatch exists
+resultsWrongMessage = Tests results: Received wrong type of the message
+rtt = RTT
+rttFail = Link detection algorithm failed due to excessive Round Trip Times.
+runningInboundTest = running 10s inbound test (server-to-client [S2C]) . . . . . .
+runningOutboundTest = running 10s outbound test (client-to-server [C2S]) . . . . .
+s2c = S2C
+s2cPacketQueuingDetected = [S2C]: Packet queueing detected
+s2cThroughput = S2C throughput
+s2cThroughputFailed = S2C throughput test FAILED!
+sackReceived = SACK blocks received
+scalingFactors = Scaling Factors
+seconds = seconds
+server = Server
+serverAcksReport = Server Acks report link is
+serverFault = Server Fault: unknown fault occurred. Please try again later
+serverBusy = Server Busy: Too many clients waiting in server queue. Please try again later
+serverBusy15s = Server Busy: Please wait 15 seconds for previous test to finish
+serverBusy30s = Server busy: Please wait 30 seconds for previous test to finish
+serverBusy60s = Server Busy: Please wait 60 seconds for previous test to finish
+serverDataReports = Server Data reports link is
+serverFail = Server failed while receiving data
+serverIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
+serverIpPreserved = Server IP addresses are preserved End-to-End
+serverNotRunning = Server process not running: start web100srv process on remote server
+serverSays = Server says
+sfwFail = Simple firewall test FAILED!
+sfwSocketFail = Simple firewall test: Cannot create listen socket
+sfwTest = Simple firewall test...
+sfwWrongMessage = Simple firewall test: Received wrong type of the message
+showOptions = Show options
+simpleFirewall = Simple firewall
+sleep10m = Sleeping for 10 mins...
+sleep1m = Sleeping for 1 min...
+sleep30m = Sleeping for 30 mins...
+sleep5m = Sleeping for 5 mins...
+sleep12h = Sleeping for 12 hours...
+sleep1d = Sleeping for 1 day...
+sleep2h = Sleeping for 2 hours...
+start = START
+startingTest = Starting test
+statistics = Statistics
+stop = STOP
+stopped = The tests were stopped!
+stopping = Stopping...
+systemFault = System Fault
+test = Test
+testsuiteWrongMessage = Negotiating test suite: Received wrong type of the message
+theSlowestLink = The slowest link in the end-to-end path is a
+theoreticalLimit = The theoretical network limit is
+thisConnIs = This connection is
+timesPktLoss = times due to packet loss
+toMaximizeThroughput = kbytes to maximize throughput
+troubleReportFrom = Trouble Report from NDT on
+unableToDetectBottleneck = Server unable to determine bottleneck link type.
+unableToObtainIP = Unable to obtain local IP address
+unknownID = Unknown test ID
+unknownServer = Unknown server
+unsupportedClient = Information: The server does not support this command line client
+vendor = Vendor
+version = Version
+versionWrongMessage = Negotiating NDT version: Received wrong type of the message
+web100Details = Web100 Detailed Analysis
+web100KernelVar = WEB100 Kernel Variables
+web100Stats = WEB100 Enabled Statistics
+web100Var = Web100 Variables
+web100rtt = Web100 reports the Round trip time
+web100tcpOpts = Web100 reports TCP negotiated the optional Performance Settings to:
+willImprove = will improve performance
+workstation = Workstation
+your = Your
+yourPcHas = Your PC/Workstation has a
+connectingTo = Connecting to
+toRunTest = to run test
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_fr_FR.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,219 @@
+10gbps = sous-r\u00E9seau 10 Gbps 10 Gigabit Ethernet/OC-192
+10mbps = sous-r\u00E9seau 10 Mbps Ethernet
+10mins = 10 minutes
+12hours = 12 heures
+1day = 1 jour
+1gbps = sous-r\u00E9seau 1.0 Gbps Gigabit Ethernet
+1min = 1 minute
+2.4gbps = sous-r\u00E9seau 2.4 Gbps OC-48
+2hours = 2 heures
+30mins = 30 minutes
+45mbps = sous-r\u00E9seau 45 Mbps T3/DS3
+5mins = 5 minutes
+622mbps = sous-r\u00E9seau 622 Mbps OC-12
+and = et
+architecture = Architecture
+bytes = Bytes
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: D\u00E9tection de mise en file d'attente de paquets
+c2sThroughput = d\u00E9bit C2S
+c2sThroughputFailed = test de d\u00E9bit C2S \u00C9CHOU\u00C9!
+cabledsl = modem C\u00E2ble/DSL
+cablesNok = Attention: trop d'erreurs r\u00E9seau, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau
+cablesOk = Bon(s) c\u00E2ble(s) r\u00E9seau trouv\u00E9s
+checkingFirewalls = V\u00E9rification de pr\u00E9sence de Firewalls . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = V\u00E9rification de pr\u00E9sence de Middleboxes . . . . . . . . . . . . . . . . . .
+clickStart = Cliquez sur D\u00C9MARRER pour commencer le test
+clickStart2 = Cliquez sur D\u00C9MARRER pour re-tester
+client = Client
+client2 = Client
+clientAcksReport = Le lien des Acks clients est
+clientDataReports = Le lien des rapports de donn\u00E9es client est
+clientInfo = D\u00E9tails du syst\u00E8me client
+clientIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
+clientIpNotFound = L'adresse IP du client non trouv\u00E9e. Pour les utilisateurs IE, modifiez les param\u00E8tres Java \n Cliquez sur Outils - Options Internet - S\u00E9curit\u00E9 - Niveau personnalis\u00E9, descendez jusqu'\u00E0\n Microsoft VM - permissions Java et cliquez sur Personnalis\u00E9, cliquez sur Param\u00E8tres Java personnalis\u00E9s\n \u00C9diter les permissions - Acc\u00E8s \u00E0 toutes les adresses r\u00E9seau, cliquez sur Appliquer et sauvegardez
+clientIpPreserved = Les adresses IP serveur sont pr\u00E9serv\u00E9es de bout en bout
+clientSays = mais le Client dit
+close = Fermez
+comments = Commentaires
+congestNo = Aucune congestion r\u00E9seau d\u00E9tect\u00E9e.
+congestYes = Information: le d\u00E9bit est limit\u00E9 par d'autres flux r\u00E9seau.
+connIdle = La connexion a \u00E9t\u00E9 oisive
+connStalled = La connexion a \u00E9t\u00E9 suspendue
+connected = Connect\u00E9 \u00E0:
+connectedTo = est connect\u00E9 \u00E0 un
+copy = Copiez
+defaultTests = Tests par d\u00E9faut
+delayBetweenTests = D\u00E9lai entre les tests
+detailedStats = Statistiques d\u00E9taill\u00E9es
+dialup = Dial-up Modem
+dialup2 = Dial-up
+done = R\u00E9alis\u00E9.
+done2 = Tcpbw100 r\u00E9alis\u00E9
+dupAcksIn = r\u00E9ception de acks en doublon
+duplexFullHalf = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
+duplexHalfFull = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
+duplexNok = Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e:
+duplexOk = Op\u00E9ration normale du duplex d\u00E9tect\u00E9e.
+endOfEmail = Fin de message e-mail
+excLoss = Une perte de paquets excessive diminue vos performances, v\u00E9rifiez les r\u00E9glages auto-negotiate de votre PC et du commutateur r\u00E9seau.
+excessiveErrors = Alerte: Trop d'erreurs, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau.
+firewallNo = n'est pas derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re r\u00E9ussie]
+firewallYes = est probablement derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re \u00E9chou\u00E9e]
+flowControlLimits = Le contr\u00F4le de flux du r\u00E9seau limite le d\u00E9bit \u00E0
+found100mbps = Lien 100 Mbps FastEthernet d\u00E9tect\u00E9.
+found10gbps = Lien 10 Gbps 10 GigEthernet/OC-192 d\u00E9tect\u00E9.
+found10mbps = Lien 10 Mbps Ethernet d\u00E9tect\u00E9.
+found1gbps = Lien 1 Gbps GigabitEthernet d\u00E9tect\u00E9.
+found2.4gbps = Lien 2.4 Gbps OC-48 d\u00E9tect\u00E9.
+found45mbps = Lien 45 Mbps T3/DS3 d\u00E9tect\u00E9.
+found622mbps = Lien 622 Mbps OC-12 d\u00E9tect\u00E9.
+foundDialup = Lien modem Dial-up d\u00E9tect\u00E9.
+foundDsl = Lien C\u00E2ble modem/DSL/T1 d\u00E9tect\u00E9.
+fullDuplex = Full duplex Fast Ethernet subnet
+general = G\u00E9n\u00E9ral
+generatingReport = G\u00E9n\u00E9ration du rapport d'incident: Ce rapport sera envoy\u00E9 \u00E0 la personne sp\u00E9cifi\u00E9e
+getWeb100Var = R\u00E9cup\u00E9rer les variables WEB100
+halfDuplex = Half duplex Fast Ethernet subnet
+id = Outil de diagnostics r\u00E9seau TCP/Web100
+immediate = imm\u00E9diat
+inboundTest = test d'entr\u00E9e Tcpbw100...
+inboundWrongMessage = Test de d\u00E9bit C2S : r\u00E9ception du mauvais type de message
+incompatibleVersion = Num\u00E9ro de version incompatible
+incrRxBuf = Agrandissement du tampon de r\u00E9ception client
+incrTxBuf = Agrandissement du tampon d'\u00E9mission du serveur NDT
+information = Information
+initialization = Initialisation...
+insufficient = Trop peu de donn\u00E9es collect\u00E9es pour d\u00E9terminer le type de lien.
+invokingMailtoFunction = Tcpbw100 Appel de la fonction Mailto
+ipProtocol = Protocole IP
+ipcFail = Communication inter-processus \u00E9chou\u00E9e, type de lien inconnu.
+usingIpv4 = -- Utilisation de l'adresse IPv4
+usingIpv6 = -- Utilisation de l'adresse IPv6
+javaData = Donn\u00E9es Java
+kbyteBufferLimits = KByte tampon, ce qui limite le d\u00E9bit \u00E0
+limitNet = limit\u00E9 par le r\u00E9seau
+limitRx = limit\u00E9 par le r\u00E9cepteur
+limitTx = limit\u00E9 par l'\u00E9metteur
+linkFullDpx = Lien r\u00E9gl\u00E9 en mode Full Duplex
+linkHalfDpx = Lien r\u00E9gl\u00E9 en mode Half Duplex
+loggingWrongMessage = Enregistrement aupr\u00E8s du serveur: r\u00E9ception du mauvais type de message
+lookupError = Impossible d'obtenir l'adresse IP distante
+mboxWrongMessage = Test de middlebox : r\u00E9ception du mauvais type de message
+middlebox = Middlebox
+middleboxFail = \u00C9chec du serveur lors du test de middlebox
+middleboxFail2 = Test de middlebox \u00C9CHOU\u00C9!
+middleboxModifyingMss = Information: le Middlebox modifie la variable MSS
+middleboxTest = Tcpbw100 test de Middlebox...
+moreDetails = Plus de d\u00E9tails...
+name = Nom
+ndtServerHas = Le serveur NDT a un
+noPktLoss1 = Pas de perte de paquets
+noPktLoss2 = Aucune perte de paquets n'a \u00E9t\u00E9 observ\u00E9e
+numberOfTests = Nombre de tests
+of = de
+off = OFF
+ok = OK
+oldDuplexMismatch = "Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e: "
+on = ON
+ooOrder = mais les paquets sont arriv\u00E9s dans le d\u00E9sordre
+options = Options
+osData = Donn\u00E9es de l'OS:
+otherClient = Un autre client est actuellement en train d'\u00EAtre servi, votre test commencera dans
+otherTraffic = Information: d'autres flux r\u00E9seaux congestionnent le lien
+outboundTest = Tcpbw100 test de sortie ...
+outboundWrongMessage = Test de d\u00E9bit C2S : R\u00E9ception du mauvais type de message
+packetQueuing = Mise en file d'attente de paquets
+packetQueuingInfo = TCP (Transmission Control Protocol) transf\u00E8re des donn\u00E9es de mani\u00E8re fiable entre deux\n h\u00F4tes Internet. Il d\u00E9tecte et r\u00E9cup\u00E8re automatiquement les erreurs et\n pertes. TCP utilise des tampons pour fournir cette fiabilit\u00E9. De plus,\n des commutateurs et routeurs utilisent des tampons pour g\u00E9rer les cas dans lesquels plusieurs liens\n d'entr\u00E9e envoient des paquets \u00E0 un seul lien de sortie ou lorsque la vitesse des liens est diff\u00E9rente\n (FastEthernet vers un modem DSL).\n\n Le serveur NDT g\u00E9n\u00E8re et envoie 10 secondes de donn\u00E9es au client. Dans\n certains cas le serveur peut produire des donn\u00E9es plus vite qu'il ne peut envoyer les paquets\n vers le r\u00E9seau (p.e., un CPU de 2 GHz \u00E9mettant vers un client connect\u00E9 en DSL).\n Quand cela arrive, certains paquets peuvent rester dans la file d'attente de sortie du serveur\n lorsque la minuterie de 10 secondes se termine. TCP continuera automatiquement \n d'envoyer ces paquets en file d'attente et le client continuera \u00E0 les accepter et\n \u00E0 g\u00E9rer ces paquets entrants. Ceci aura pour r\u00E9sultat que le test client\n dure plus longtemps que pr\u00E9vu.\n\n Cette condition s'est r\u00E9alis\u00E9e durant ce test. Aucune action n'est n\u00E9cessaire pour r\u00E9soudre ce probl\u00E8me.
+packetSizePreserved = La taille des paquets est pr\u00E9serv\u00E9e de bout-en-bout
+packetsize = La taille des paquets
+pc = PC
+pctOfTime = % du temps
+performedTests = Tests r\u00E9alis\u00E9s
+pktsRetrans = paquets retransmis
+possibleDuplexFullHalf = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
+possibleDuplexHalfFull = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
+possibleDuplexHalfFullWarning = Attention: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
+preferIPv6 = pr\u00E9f\u00E9rer IPv6
+printDetailedStats = Afficher les statistiques d\u00E9taill\u00E9es
+protocolError = Erreur de protocole! Attendait 'prepare', re\u00E7u: 0x
+qSeen = test de d\u00E9bit: Mise en file d'attente de paquets d\u00E9tect\u00E9e
+ready = Tcpbw100 pr\u00EAt
+receiveBufferShouldBe = Information: Le tampon de r\u00E9ception devrait \u00EAtre
+receiving = Reception des r\u00E9sultats...
+reportProblem = Rapporter un probl\u00E8me
+resultsParseError = Erreur lors du traitement des r\u00E9sultats!
+resultsTimeout = Attention! D\u00E9passement du d\u00E9lai client lors de la lecture des donn\u00E9es, il y a peut-\u00EAtre un probl\u00E8me de duplex mismatch
+resultsWrongMessage = R\u00E9sultat des tests: r\u00E9ception du mauvais type de message
+rtt = RTT
+rttFail = L'algorithme de d\u00E9tection du lien a \u00E9chou\u00E9 \u00E0 cause d'un temps d'aller-retour (RTT) trop important.
+runningInboundTest = ex\u00E9cution du test d'entr\u00E9e de 10 secondes (server-to-client [S2C]) . . . . . .
+runningOutboundTest = ex\u00E9cution du test de sortie de 10s (client-to-server [C2S]) . . . . .
+s2c = S2C
+s2cPacketQueuingDetected = [S2C]: D\u00E9tection de mise en file d'attente de paquets
+s2cThroughput = d\u00E9bit S2C
+s2cThroughputFailed = Test de d\u00E9bit S2C \u00C9CHOU\u00C9!
+sackReceived = Blocs SACK re\u00E7us
+scalingFactors = Facteurs d'\u00E9chelle
+seconds = secondes
+server = Serveur
+serverAcksReport = les Acks du serveur rapportent que le lien est
+serverFault = Erreur du serveur: une erreur inconnue a eu lieu. Veuillez re-essayer plus tard.
+serverBusy = Serveur occup\u00E9: Trop de clients attendent dans la file d'attente du serveur. Veuillez re-essayer plus tard
+serverBusy15s = Serveur occup\u00E9: Veuillez attendre 15 secondes pour que le test pr\u00E9c\u00E9dant termine
+serverBusy30s = Serveur occup\u00E9: Veuillez attendre 30 secondes pour que le test pr\u00E9c\u00E9dant termine
+serverBusy60s = Serveur occup\u00E9: Veuillez attendre 60 secondes pour que le test pr\u00E9c\u00E9dant termine
+serverDataReports = Les donn\u00E9es du serveur rapportent que le lien est
+serverFail = Erreur du serveur lors de la r\u00E9ception des donn\u00E9es
+serverIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
+serverIpPreserved = Les adresses IP du serveur sont conserv\u00E9es de bout en bout
+serverNotRunning = Processus serveur non actif: d\u00E9marrez le processus web100srv sur le serveur distant
+serverSays = Le serveur dit
+sfwFail = Le simple test firewall a \u00C9CHOU\u00C9!
+sfwSocketFail = Test simple du firewall: ne peut cr\u00E9er le socket d'\u00E9coute
+sfwTest = Test simple du firewall...
+sfwWrongMessage = Test simple du firewall : r\u00E9ception du mauvais type de message
+showOptions = Afficher les options
+simpleFirewall = Simple firewall
+sleep10m = En attente pour 10 minutes...
+sleep1m = En attente pour 1 minute...
+sleep30m = En attente pour 30 minutes...
+sleep5m = En attente pour 5 minutes...
+sleep12h = En attente pour 12 heures...
+sleep1d = En attente pour 1 jour...
+sleep2h = En attente pour 2 heures...
+start = D\u00C9MARRER
+startingTest = D\u00E9marrage du test
+statistics = Statistiques
+stop = ARRETER
+stopped = Les tests ont \u00E9t\u00E9 arr\u00EAt\u00E9s !
+stopping = Arr\u00EAt...
+systemFault = System Fault
+test = Test
+testsuiteWrongMessage = Negotiating test suite: r\u00E9ception du mauvais type de message
+theSlowestLink = Le lien le plus lent sur le chemin de bout en bout est un
+theoreticalLimit = La limite th\u00E9orique du r\u00E9seau est
+thisConnIs = Cette connexion est
+timesPktLoss = fois \u00E0 cause de la perte de paquets
+toMaximizeThroughput = kbytes pour maximiser le d\u00E9bit
+troubleReportFrom = Rapport d'incident de NDT sur
+unableToDetectBottleneck = Le serveur est incapable de d\u00E9terminer le type de lien du goulot d'\u00E9tranglement.
+unableToObtainIP = Impossible d'obtenir l'adresse IP locale
+unknownID = test ID inconnu
+unknownServer = Serveur inconnu
+unsupportedClient = Information: Le serveur n'accepte pas ce client en ligne de commande
+vendor = Vendeur
+version = Version
+versionWrongMessage = Negotiating NDT version: r\u00E9ception du mauvais type de message
+web100Details = Analyse d\u00E9taill\u00E9e Web100
+web100KernelVar = Variables du noyau WEB100
+web100Stats = Statistiques activ\u00E9es WEB100
+web100Var = Variables Web100
+web100rtt = Web100 rapporte le temps d'aller-retour (RTT)
+web100tcpOpts = Web100 rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
+willImprove = am\u00E9liorera les performances
+workstation = Poste de travail
+your = Votre
+yourPcHas = Votre PC/Poste de travail a un
+connectingTo = Connexion \u00E0
+toRunTest = Pour d\u00E9marrer le test
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_nb_NO.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,219 @@
+10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192-subnett
+10mbps = 10 Mbps Ethernet-subnett
+10mins = 10 mins
+12hours = 12 hours
+1day = 1 d\u00f8ygn
+1gbps = 1.0 Gbps Gigabit Ethernet-subnett
+1min = 1 min
+2.4gbps = 2.4 Gbps OC-48-subnett
+2hours = 2 timer
+30mins = 30 min
+45mbps = 45 Mbps T3/DS3-subnett
+5mins = 5 min
+622mbps = et 622 Mbps OC-12-subnett
+and = og
+architecture = Arkitektur
+bytes = byte
+c2s = K-T
+c2sPacketQueuingDetected = [K-T]: Pakkek\u00f8ing oppdaget
+c2sThroughput = K-T ytelse
+c2sThroughputFailed = K-T ytelsestest FEILET!
+cabledsl = Kabel/DSL-modem
+cablesNok = Advarsel: for mange nettverksfeil, sjekk kablene.
+cablesOk = Nettverkskablene er i orden.
+checkingFirewalls = Ser etter brannmurer . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = Ser etter mellombokser . . . . . . . . . . . . . . . . .
+clickStart = Trykk START for \u00e5 starte testene.
+clickStart2 = Trykk START for \u00e5 teste en gang til.
+client = Klient
+client2 = Klienten
+clientAcksReport = basert p\u00e5 ack fra klienten ansl\u00e5s linken til
+clientDataReports = Basert p\u00e5 data fra klienten ansl\u00e5s linken til
+clientInfo = Opplysninger om klientmaskinen
+clientIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
+clientIpNotFound = IP-addressen til klientmaskinen ble ikke funnet
+clientIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
+clientSays = men klienten sier
+close = Lukk
+comments = Kommentarer
+congestNo = Overbelastning i nettet ikke funnet.
+congestYes = Til orientering: ytelsen er begrenset av annen trafikk i nettet.
+connIdle = Forbindelsen ventet
+connStalled = Forbindelsen hang
+connected = Koblet til:
+connectedTo = er koblet til et
+connectingTo = Kobler opp mot
+copy = Kopier
+defaultTests = Standardtester
+delayBetweenTests = Delay between tests
+detailedStats = Detaljer
+dialup = Oppringt modem
+dialup2 = oppringt
+done = Ferdig
+done2 = Tcpbw100 ferdig
+dupAcksIn = dupliserte ack ble mottatt
+duplexFullHalf = Alarm: Dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
+duplexHalfFull = Alarm: Dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
+duplexNok = Alarm: Dupleksitetsfeil:
+duplexOk = Dupleksitet er i orden.
+endOfEmail = Slutt p\u00e5 epost
+excLoss = "H\u00f8yt pakketap begrenser ytelsen, kontroller automatisk konfigurering mellom din datamaskin og nettverkssvitsjen.
+excessiveErrors = Alarm: Alvorlige pakketap, sjekk nettverkskabler.
+firewallNo = er ikke bak brannmur. [Oppn\u00e5dde forbindelse med midlertidig port]
+firewallYes = er trolig bak en brannmur . [Oppn\u00e5dde ikke forbindelse med midlertidig port]
+flowControlLimits = Flytkontroll i nettet begrenser ytelsen til
+found100mbps = Link med 100 Mbit/s FastEthernet funnet.
+found10gbps = Link med 10 Gbit/s 10 GigEthernet/OC-192 funnet.
+found10mbps = Link med 10 Mbit/s Ethernet funnet.
+found1gbps = Link med 1 Gbit/s GigabitEthernet funnet.
+found2.4gbps = Link med 2.4 Gbit/s OC-48 funnet.
+found45mbps = Link med 45 Mbit/s T3/DS3 funnet.
+found622mbps = Link med 622 Mbit/s OC-12 funnet.
+foundDialup = Link med oppringt modem funnet.
+foundDsl = Link med kabelmodem/DSL/T1 funnet.
+fullDuplex = full dupleks "Fast Ethernet"-subnett
+general = Annet
+generatingReport = Genererer feilrapport; denne vil bli sendt til personen du spesifiserer
+getWeb100Var = Viser variabler fra WEB100
+halfDuplex = Halv-dupleks "Fast Ethernet"-subnett
+id = TCP/Web100 nettverksdiagnostikkverkt\u00f8y
+immediate = umiddelbart
+inboundTest = Tcpbw100 innkommende test...
+inboundWrongMessage = Klient-til-tjener-ytelsestest: mottok feil melding
+incompatibleVersion = Inkompatibelt versjonsnummer
+incrRxBuf = \u00c5 \u00f8ke klientmaskinens mottaksbuffer
+incrTxBuf = \u00c5 \u00f8ke tjenermaskinens sendebuffer
+information = Informasjon
+initialization = Initialiserer...
+insufficient = Ikke nok data til \u00e5 bestemme type link.
+invokingMailtoFunction = Tcpbw100 sender post
+ipProtocol = IP-protokoll
+ipcFail = Feil ved kommunikasjon mellom prosesser, type link ikke bestemt.
+javaData = Opplysninger om Java
+kbyteBufferLimits = kbyte som begrenser ytelsen til
+limitNet = begrenset av nettet
+limitRx = begrenset av mottakeren
+limitTx = begrenset av senderen
+linkFullDpx = Linken er i full dupleksmodus.
+linkHalfDpx = Linken er i halv dupleksmodus.
+loggingWrongMessage = Logging til tjener: Mottok feil type melding
+lookupError = Greide ikke sl\u00e5 opp tjenerens IP-addresse
+mboxWrongMessage = Mellombokstest: Mottok feil type melding
+middlebox = Mellomboks
+middleboxFail = Tjenerfeil under mellombokstesting
+middleboxFail2 = Mellombokstest feilet!
+middleboxModifyingMss = Til orientering: En mellomboks i nettet forandrer valgt MSS
+middleboxTest = Tcpbw100 mellombokstest...
+moreDetails = Detaljer
+name = Navn
+ndtServerHas = NDT-tjeneren har en buffer p\u00e5
+noPktLoss1 = Intet pakketap
+noPktLoss2 = Intet pakketap
+numberOfTests = Antall tester
+of = av
+off = AV
+ok = OK
+oldDuplexMismatch = Advarsel: Gammel dupleksitetsfeil oppdaget:
+on = P\u00C5
+ooOrder = men pakker ankom i feil rekkef\u00f8lge
+options = Innstillinger
+osData = Operativsystem:
+otherClient = Tjeneren er for \u00f8yeblikket opptatt med en annen klient. Testen din vil begynne innen
+otherTraffic = Informasjon: Annen trafikk overbelaster linken
+outboundTest = Tcpbw100 utg\u00e5ende test...
+outboundWrongMessage = K-T ytelsestest: mottok feil type melding
+packetQueuing = Pakkek\u00f8ing
+packetQueuingInfo = TCP (Transmission Control Protocol) er en p\u00e5litelig nettverksprotokoll\n som overf\u00f8rer data mellom forskjellige maskiner. Den oppdager og motvirker\n automatisk feil og pakketap. TCP bruker buffere for \u00e5 oppn\u00e5 dette.\n I tillegg s\u00e5 har svitsjer og rutere buffere for \u00e5 h\u00e5ndtere tilfeller\n hvor mange maskiner sender til samme port, eller hvor hastigheter\n endres (for eksempel "Fast Ethernet" eller et DSL-modem).\n \n NDT-tjeneren genererer og sender 10 sekunder med data til klienten.\n I noen tilfeller genererer tjeneren data kjappere enn den klarer \u00e5\n sende ut pakker til nettverket (for eksempel en tjener med 2GHz CPU\n som sender til en klient koblet til via DSL). N\u00e5r dette skjer, hender\n det at det er igjen pakker i pakkek\u00f8en n\u00e5r de 10 sekundene har passert.\n TCP vil automatisk fors\u00f8ke \u00e5 sende disse pakkene, selv om tiden er ute,\n og klienten vil fortsette \u00e5 motta de. Dette vil f\u00f8re til at klienttesten\n kan kj\u00f8re litt lenger enn forventet.\n \n Dette hendte under kj\u00f8ringen av denne testen. Du trenger ikke gj\u00f8re noe\n for \u00e5 fikse dette.
+packetSizePreserved = Pakkest\u00f8rrelse blir bevart fra ende til ende
+packetsize = pakkkest\u00f8rrelse
+pc = Personlig datamaskin
+pctOfTime = % av tiden
+performedTests = Tester \u00e5 utf\u00f8re
+pktsRetrans = pakker ble retransmittert
+possibleDuplexFullHalf = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
+possibleDuplexHalfFull = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
+possibleDuplexHalfFullWarning = Advarsel: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
+preferIPv6 = bruk IPv6 hvis mulig
+printDetailedStats = Viser detaljer
+protocolError = Protokollfeil! Mottok: 0x
+qSeen = ytelsestest: Pakkek\u00f8ing oppdaget
+ready = Tcpbw100 klar
+receiveBufferShouldBe = Informasjon: Mottaksbufferen burde v\u00e6re
+receiving = Henter resultater...
+reportProblem = Meld fra om problemer
+resultsParseError = Feil under tolkingen av testresultater!
+resultsTimeout = Advarsel! Tidsavbrudd under henting av data, mulig dupleksitetsfeil
+resultsWrongMessage = Testresultater: Mottok feil type melding
+rtt = rundreisetid
+rttFail = For lang rundreisetid til \u00e5 bestemme type link.
+runningInboundTest = Kj\u00f8rer 10 sekunders innkommende test (tjener-til-klient [T-K]) . . . .
+runningOutboundTest = Kj\u00f8rer 10 sekunders utg\u00e5ende test (klient-til-tjener [K-T]) . . . . . . .
+s2c = T-K
+s2cPacketQueuingDetected = [T-K]: Pakkek\u00f8ing oppdaget
+s2cThroughput = Ytelse tjener-klient
+s2cThroughputFailed = Ytelsestest fra tjener til klient FEILET!
+sackReceived = SACK-blokker ble mottatt.
+scalingFactors = Skaleringsfaktorer
+seconds = sekunder
+server = Tjener
+serverAcksReport = basert p\u00e5 ack fra tjeneren ansl\u00e5s linken til
+serverFault = Tjener Forkastningen; Ukjente forkastningen oppstod. Du kan pr\u00f8ve senere
+serverBusy = Tjener opptatt; For mange klienter i k\u00f8. Du kan pr\u00f8ve senere
+serverBusy15s = Tjener opptatt; vennligst vent 15 sekunder mens forrige test kj\u00f8res ferdig
+serverBusy30s = Tjener opptatt; vennligst vent 30 sekunder mens forrige test kj\u00f8res ferdig
+serverBusy60s = Tjener opptatt; vennligst vent 60 sekunder mens forrige test kj\u00f8res ferdig
+serverDataReports = Basert p\u00e5 data fra tjeneren ansl\u00e5s linken til
+serverFail = Tjenerfeil under mottak av data
+serverIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
+serverIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
+serverNotRunning = Tjenerprosess kj\u00f8rer ikke; vennligst start "web100srv" p\u00e5 tjeneren.
+serverSays = Tjeneren sier
+sfwFail = Enkel brannmurtest FEILET!
+sfwSocketFail = Enkel brannmurtest: Kan ikke opprette lytteport
+sfwTest = Enkel brannmurtest...
+sfwWrongMessage = Enkel brannmurtest: Mottok feil type melding
+showOptions = Vis innstillinger
+simpleFirewall = Enkel brannmur
+sleep10m = Venter 10 minutter...
+sleep12h = Venter 12 timer...
+sleep1d = Venter ett d\u00f8gn...
+sleep1m = Venter ett minutt...
+sleep2h = Venter to timer...
+sleep30m = Venter 30 minutter...
+sleep5m = Venter fem minutter...
+start = START
+startingTest = Starter test
+statistics = Statistikk
+stop = STOPP
+stopped = Testene ble stoppet!
+stopping = Stopper...
+systemFault = systemfeil
+test = Test
+testsuiteWrongMessage = Avtaler tester: Mottok feil type melding
+theSlowestLink = Den tregeste linken i stien mellom din maskin og tjeneren er et
+theoreticalLimit = Teoretisk grense for nettet er
+thisConnIs = Denne forbindelsen er
+timesPktLoss = ganger p\u00e5 grunn av pakketap
+toMaximizeThroughput = kilobyte for \u00e5 maksimere ytelsen
+toRunTest = for \u00e5 teste
+troubleReportFrom = Feilrapport fra NDT p\u00e5
+unableToDetectBottleneck = Tjeneren greide ikke \u00e5 bestemme flaskehalsen i stien
+unableToObtainIP = Kunne ikke f\u00e5 tak i den lokale IP-addressen
+unknownID = Ukjent test-ID
+unknownServer = Ukjent tjener
+unsupportedClient = Informasjon: Tjeneren st\u00f8tter ikke denne kommandolinjeklienten
+usingIpv4 = -- Bruker IPv4-addresse
+usingIpv6 = -- Bruker IPv6-addresse
+vendor = Leverand\u00f8r
+version = Versjon
+versionWrongMessage = Avtaler NDT-versjon: Mottok feil type melding
+web100Details = Detaljerte opplysninger fra Web100
+web100KernelVar = Kjernevariabler fra WEB100
+web100Stats = Statistikk fra WEB100
+web100Var = Variabler fra Web100
+web100rtt = Web100 melder at rundreisetid
+web100tcpOpts = Web100 melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
+willImprove = vil forbedre ytelsen
+workstation = Arbeidsstasjon
+your = Din
+yourPcHas = Datamaskinen din har en buffer p\u00e5
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_nl_NL.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,219 @@
+10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
+10mbps = 10 Mbps Ethernet subnet
+10mins = 10 minutes
+12hours = 12 uren
+1day = 1 dag
+1gbps = 1.0 Gbps Gigabit Ethernet subnet
+1min = 1 minuut
+2.4gbps = 2.4 Gbps OC-48 subnet
+2hours = 2 uren
+30mins = 30 minuten
+45mbps = 45 Mbps T3/DS3 subnet
+5mins = 5 minuten
+622mbps = a 622 Mbps OC-12 subnet
+and = en
+architecture = Architectuur
+bytes = Bytes
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: Packet queueing detected
+c2sThroughput = C2S doorvoer
+c2sThroughputFailed = C2S doorvoer test MISLUKT!
+cabledsl = Kabel/DSL modem
+cablesNok = Melding: erg veel netwerk errors, controleer de netwerk kabels
+cablesOk = Goede netwerk kabel(s) gevonden
+checkingFirewalls = Zoeken naar firewalls . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = Zoeken naar tussenliggende routers . . . . . . . . . . . . . . . . . .
+clickStart = Klik START om de test te beginnen
+clickStart2 = Klik START om opnieuw te testen
+client = Client
+client2 = Client
+clientAcksReport = Client Acks zegt dat link is
+clientDataReports = Client Data zegt dat link is
+clientInfo = Client Systeem Details
+clientIpModified = Informatie: Network Address Translation (NAT) Uw router verandert het IP adres
+clientIpNotFound = Client IP adres niet gevonden. Voor IE gebruikers, verander de Java parameters\n Klik Tools - Internet Options - Security - Custom Level, scroll naar\n Microsoft VM - Java permissions en klik Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, klik Enable en sla uw wijzigingen op
+clientIpPreserved = Server IP adressen zijn beveiligd End-to-End
+clientSays = maar Client zegt
+close = Sluiten
+comments = Commentaar
+congestNo = Geen netwerk overgebruik ontdekt.
+congestYes = Informatie: doorvoer is gelimiteerd door ander netwerk verkeer.
+connIdle = De connectie was idle
+connStalled = De connectie is vastgelopen
+connected = Verbonden met:
+connectedTo = is verbonden met een
+copy = Kopie
+defaultTests = Standaard tests
+delayBetweenTests = vertraging tussen tests
+detailedStats = Gedetailleerde Statistieken
+dialup = Inbel Modem
+dialup2 = Inbel
+done = Klaar.
+done2 = Tcpbw100 klaar
+dupAcksIn = meerdere dezelfde acks ontvangen
+duplexFullHalf = Alarm: Duplex Mismatch conditie gedetecteerd Switch=full en Host=half
+duplexHalfFull = Alarm: Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
+duplexNok = Melding: Oude Duplex mismatch conditie gedetecteerd:
+duplexOk = Normale duplex instellingen gevonden.
+endOfEmail = Einde Van Email Bericht
+excLoss = Excessieve verloren pakketten zorgen voor een slechtere doorvoer, controleer de auto-negotiate functie op uw PC en de netwerk switch
+excessiveErrors = Alarm: Excessieve errors, controleer netwerk kabel(s).
+firewallNo = is niet achter een firewall. [Connectie naar de directe poort was succesvol]
+firewallYes = is waarschijnlijk achter een firewall. [Connectie naar de directe poort mislukt]
+flowControlLimits = Het network based flow control limiteerd de doorvoer tot
+found100mbps = 100 Mbps FastEthernet link gevonden.
+found10gbps = 10 Gbps 10 GigEthernet/OC-192 link gevonden.
+found10mbps = 10 Mbps Ethernet link gevonden.
+found1gbps = 1 Gbps GigabitEthernet link gevonden.
+found2.4gbps = 2.4 Gbps OC-48 link gevonden.
+found45mbps = 45 Mbps T3/DS3 link gevonden.
+found622mbps = 622 Mbps OC-12 link gevonden.
+foundDialup = Inbel modem link gevonden.
+foundDsl = Kabel modem/DSL/T1 link gevonden.
+fullDuplex = Full duplex Fast Ethernet subnet
+general = normaal
+generatingReport = Probleem Rapport Genereren: Dit rapport wordt gemaild naar de persoon die u opgeeft
+getWeb100Var = Vraag WEB100 Variabelen op
+halfDuplex = Half duplex Fast Ethernet subnet
+id = TCP/Web100 Network Diagnostic Tool
+immediate = direct
+inboundTest = Tcpbw100 inkomende test...
+inboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
+incompatibleVersion = Incompatibel versie nummer
+incrRxBuf = Verhogen van de client´s recieve buffer
+incrTxBuf = Verhogen van de server´s send buffer
+information = Informatie
+initialization = Initialisatie...
+insufficient = Niet genoeg data verzameld om link type te bepalen.
+invokingMailtoFunction = Tcpbw100 Mailto functie uitvoeren
+ipProtocol = IP protocol
+ipcFail = Inter-proces communicatie mislukt, onbekend link type.
+usingIpv4 = -- Maakt gebruik van IPv4 adres
+usingIpv6 = -- Maakt gebruik van IPv6 adres
+javaData = Java data
+kbyteBufferLimits = KByte buffer, dit limiteerd de doorvoer tot
+limitNet = netwerk gelimiteerd
+limitRx = ontvanger gelimiteerd
+limitTx = zender gelimiteerd
+linkFullDpx = Link aangepast naar Full Duplex mode
+linkHalfDpx = Link aangepast naar Half Duplex mode
+loggingWrongMessage = Loggen naar server: Verkeerd type bericht ontvangen
+lookupError = Kan geen remote IP adres verkrijgen
+mboxWrongMessage = Middlebox test: Verkeerd type bericht ontvangen
+middlebox = Middlebox
+middleboxFail = Server heeft gefaald while middlebox testing
+middleboxFail2 = Middlebox test MISLUKT!
+middleboxModifyingMss = Informatie: Netwerk Middlebox verandert MSS variabele
+middleboxTest = Tcpbw100 Middlebox test...
+moreDetails = Meer Details...
+name = Naam
+ndtServerHas = De NDT server heeft een
+noPktLoss1 = Geen verloren packets
+noPktLoss2 = Er zijn geen verloren packets geconstateerd
+numberOfTests = Aantal tests
+of = van
+off = OFF
+ok = OK
+oldDuplexMismatch = "Melding: Oude Duplex mismatch conditie gedetecteerd: "
+on = ON
+ooOrder = maar packets kwamen in de verkeerde volgorde aan
+options = Opties
+osData = OS data:
+otherClient = Op dit moment wordt een andere client geholpen, uw test begint zo spoedig mogelijk
+otherTraffic = Informatie: Ander netwerk verkeer vertraagd de connectie
+outboundTest = Tcpbw100 uitgaande test...
+outboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
+packetQueuing = Pakket queuing
+packetQueuingInfo = TCP (Transmission Control Protocol) verstuurd betrouwbaar tussen twee\n Internet hosts. Het detecteerd en hersteld error en verliezen.\n TCP gebruikt buffers om deze betrouwbaarheid te verzorgen. Daarnaast,\n hebben switches en routers ook buffers om situaties waarbij meerdere\n links pakketten versturen naar een enkele uitgaande poort of wanneer\n de link snelheid veranderd (FastEthernet naar DSL modem).\n\n De NDT server genereerd en verstuurd 10 seconden data naar de client. In\n sommige gevallen genereerd de server sneller pakketten dan er verstuurd\n kan worden naar het netwerk (bijv., een 2 GHz CPU naar een DSL link).\n Wanneer dit gebeurt, blijven sommige pakketten hangen in de server queue\n wanneer de 10 seconden timeout optreedt. TCP zal automatisch doorgaan\n met het verzenden van deze pakketten en de client zal deze ook blijven accepteren\n en behandelen. Dit kan ervoor zorgen dat de client test langer duurt dan gepland.\n\n Deze situatie heeft zich voorgedaan tijdens deze test. U hoeft geen actie te\n ondernemen om dit probleem op te lossen.\n
+packetSizePreserved = Pakket grootte is bewaard gebleven End-to-End
+packetsize = de Pakket grootte
+pc = PC
+pctOfTime = % van de tijd
+performedTests = Uitgevoerde tests
+pktsRetrans = pakketten opnieuw verstuurd
+possibleDuplexFullHalf = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=Full en Host=half
+possibleDuplexHalfFull = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
+possibleDuplexHalfFullWarning = Warning: Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
+preferIPv6 = prefereer IPv6
+printDetailedStats = Print Gedetaileerde Statistieken
+protocolError = Protocol error! Verwachtte 'prepare', maar kreeg: 0x
+qSeen = doorvoer test: Pakket queuing gedetecteerd
+ready = Tcpbw100 klaar voor gebruik
+receiveBufferShouldBe = Informatie: The ontvangst buffer zou moeten zijn
+receiving = Resultaten ontvangen...
+reportProblem = Rapporteer een probleem
+resultsParseError = Error bij het parsen van de test resultaten!
+resultsTimeout = Melding! Client time-out tijden het lezen van de data, mogelijk duplex mismatch is aanwezig
+resultsWrongMessage = Test resultaten: Verkeerd type bricht ontvangen
+rtt = RTT
+rttFail = Link detectie algorithme mislukt vanwege excessieve Round Trip Times.
+runningInboundTest = uitvoeren 10s inkomende test (server-naar-client [S2C]) . . . . . .
+runningOutboundTest = uitvoeren 10s uitgaande test (client-naar-server [C2S]) . . . . .
+s2c = S2C
+s2cPacketQueuingDetected = [S2C]: Pakket queueing gedetecteerd
+s2cThroughput = S2C doorvoer
+s2cThroughputFailed = S2C tdoorvoer test MISLUKT!
+sackReceived = SACK blocks ontvangen
+scalingFactors = Scaling Factoren
+seconds = seconden
+server = Server
+serverAcksReport = Server Acks zegt dat link is
+serverFault = De Fout van de server: de onbekende fout kwam voor. Gelieve te proberen opnieuw later
+serverBusy = Server Bezig: Teveel clients wachtende in queue. Probeer het later nog eens
+serverBusy15s = Server Bezig: Wacht alstublieft 15 seconden om de vorige test af te ronden
+serverBusy30s = Server Bezig: Wacht alstublieft 30 seconden om de vorige test af te ronden
+serverBusy60s = Server Bezig: Wacht alstublieft 60 seconden om de vorige test af te ronden
+serverDataReports = Server Data zegt dat link is
+serverFail = Server fout tijdens het ontvangen van data
+serverIpModified = Informatie: Network Address Translation (NAT) box verandert het IP adres van de client
+serverIpPreserved = Server IP adressen worden behouden End-to-End
+serverNotRunning = Server proces draait niet: start het web100srv proces op de server
+serverSays = Server zegt
+sfwFail = Simpele firewall test MISLUKT!
+sfwSocketFail = Simpele firewall test: Kan geen listen socket aanmaken
+sfwTest = Simpele firewall test...
+sfwWrongMessage = Simpele firewall test: Verkeerd bericht ontvangen
+showOptions = Toon opties
+simpleFirewall = Simpele firewall
+sleep10m = Slapen voor 10 minuten...
+sleep1m = Slapen voor 1 minuut...
+sleep30m = Slapen voor 30 minuten...
+sleep5m = Slapen voor 5 minuten...
+sleep12h = Slapen voor 12 uren...
+sleep1d = Slapen voor 1 dag...
+sleep2h = Slapen voor 2 uren...
+start = START
+startingTest = Starten test
+statistics = Statistieken
+stop = STOP
+stopped = De tests zijn gestopt!
+stopping = Stoppen...
+systemFault = Systeem Fout
+test = Test
+testsuiteWrongMessage = Overleggen test suite: Verkeerd type bericht ontvangen
+theSlowestLink = De traagste link in het end-to-end pad is een
+theoreticalLimit = De theoretische netwerk limiet is
+thisConnIs = Deze connectie is
+timesPktLoss = keren vanwege packet loss
+toMaximizeThroughput = kbytes om doorvoer te maximaliseren
+troubleReportFrom = Probleem Rapport van NDT op
+unableToDetectBottleneck = Server kan de bottleneck link niet bepalen.
+unableToObtainIP = Kan lokaal IP adres niet achterhalen
+unknownID = Onbekend test ID
+unknownServer = Onbekende server
+unsupportedClient = Informatie: De server ondersteund deze command line client niet
+vendor = Bedrijf
+version = Versie
+versionWrongMessage = Overleggen NDT versie: Verkeerd type bericht ontvangen
+web100Details = Web100 gedetaileerde Analyze
+web100KernelVar = WEB100 Kernel Variabelen
+web100Stats = WEB100 Enabled Statistieken
+web100Var = Web100 Variabelen
+web100rtt = Web100 rapporteerd de Round trip time
+web100tcpOpts = Web100 heeft voor TCP de volgende optionele settings overlegd:
+willImprove = zal de performance verbeteren
+workstation = Werkstation
+your = Uw
+yourPcHas = Uw PC/Werkstation heeft een
+connectingTo = Connecten naar
+toRunTest = start test
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_pt_BR.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,218 @@
+10gbps = sub-rede Gigabit Ethernet/OC-192 de 10 Gbps (10 Gbps 10 Gigabit Ethernet/OC-192 subnet)
+10mbps = sub-rede Ethernet de 10 Mbps (10 Mbps Ethernet subnet)
+10mins = 10 min
+12hours = 12 horas
+1day = 1 dia
+1gbps = sub-rede Gigabit Ethernet de 1.0 Gbps (1.0 Gbps Gigabit Ethernet subnet)
+1min = 1 min
+2.4gbps = sub-rede OC-48 de 2.4 Gbps ( 2.4 GbpsOC-48 subnet)
+2hours = 2 horas
+30mins = 30 min
+45mbps = sub-rede T3/DS3 de 45 Mbps (45 Mbps T3/DS3 subnet)
+5mins = 5 min
+622mbps = uma sub-rede OC-12 de 622 Mbps ( a 622 Mbps OC-12 subnet)
+and = e
+architecture = Arquitetura
+bytes = Bytes
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: Fila de pacotes detectada
+c2sThroughput = C2S taxa de transfer\u00EAncia
+c2sThroughputFailed = C2S teste de taxa de transfer\u00EAncia FALHOU!
+cabledsl = Cabo/ modem DSL
+cablesNok = Aviso: excessivos erros de rede detectados, verifique o(s) cabo(s) de rede
+cablesOk = Encontrado(s) cabo(s) de rede adequados
+checkingFirewalls = Procurando por firewalls . . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = Procurando por Middleboxes . . . . . . . . . . . . . . . . . .
+clickStart = Clique em INICIAR para iniciar o teste
+clickStart2 = Clique em INICIAR para executar o teste novamente
+client = Cliente
+client2 = Cliente
+clientAcksReport = Cliente Acks reporta que o link \u00E9
+clientDataReports = Dados do Cliente reporta que o link \u00E9
+clientInfo = Detalhes do Sistema do Cliente
+clientIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
+clientIpNotFound = Endere\u00E7o IP do Cliente n\u00E3o encontrado. Para usu\u00E1rios do IE, altere os par\u00E2metros do Java\n clique em Ferramentas - Op\u00E7\u00F5es da Internet - Seguran\u00E7a - N\u00EDvel personalizado, role para baixo at\u00E9 Microsoft VM - Permiss\u00F5es Java e clique em Customizar, clique Customizar configura\u00E7\u00F5es do Java\n Edite as Permiss\u00F5es - Acesse todos Endere\u00E7os de Rede, clique em habilitar e salve as altera\u00E7\u00F5es
+clientIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
+clientSays = mas o Cliente diz
+close = Fechar
+comments = Comment\u00E1rios
+congestNo = Congestionamento da rede n\u00E3o foi detectado
+congestYes = Informa\u00E7\u00E3o: taxa de transfer\u00EAncia \u00E9 limitada devido a outro tr\u00E1fego de rede.
+connIdle = A conex\u00E3o estava ociosa em
+connStalled = A conex\u00E3o foi interrompida
+connected = Conectado a:
+connectedTo = est\u00E1 conectado a um(a)
+copy = Copiar
+defaultTests = Testes padr\u00E3o
+delayBetweenTests = Atraso entre os testes
+detailedStats = Estat\u00EDsticas detalhadas
+dialup = Modem Dial-up
+dialup2 = Discada
+done = Conclu\u00EDdo
+done2 = Tcpbw100 conclu\u00EDdo.
+dupAcksIn = acks duplicados recebidos
+duplexFullHalf = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
+duplexHalfFull = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
+duplexNok = Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:
+duplexOk = Dupla opera\u00E7\u00E3o normal encontrada.
+endOfEmail = Final da mensagem de E-mail
+excLoss = Excessiva perda de pacotes est\u00E1 impactando na sua performance, cheque a fun\u00E7\u00E3o auto-negotiate no seu computador local e no switch da rede
+excessiveErrors = Alerta: Erros excessivos, verifique o(s) cabo(s) de rede.
+firewallNo = n\u00E3o protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera conclu\u00EDda com \u00EAxito]
+firewallYes = provavelmente protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera falhou]
+flowControlLimits = O controle de fluxo da rede limita a taxa de transfer\u00EAncia em
+found100mbps = link de 100 Mbps FastEthernet encontrado.
+found10gbps = link de 10 Gbps 10 GigEthernet/OC-192 encontrado.
+found10mbps = link de 10 Mbps Ethernet encontrado.
+found1gbps = link de 1 Gbps GigabitEthernet encontrado.
+found2.4gbps = link de 2.4 Gbps OC-48 encontrado.
+found45mbps = link de 45 Mbps T3/DS3 encontrado.
+found622mbps = link de 622 Mbps OC-12 encontrado.
+foundDialup = link de Dial-up modem encontrado.
+foundDsl = link de modem a cabo/DSL/T1 encontrado.
+fullDuplex = sub-rede Full duplex Fast Ethernet
+general = Geral
+generatingReport = Gerando Relat\u00F3rio de Problemas: Esse relat\u00F3rio ser\u00E1 enviado por email para a pessoa que voc\u00EA especificar
+getWeb100Var = Buscar vari\u00E1veis web100
+halfDuplex = sub-rede Half duplex Fast Ethernet
+id = TCP/Web100 Ferramenta de Diagn\u00F3stico da Rede
+immediate = imediato
+inboundTest = Tcpbw100 teste de entrada inbound test...
+inboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
+incompatibleVersion = N\u00FAmero da vers\u00E3o incompat\u00EDvel
+incrRxBuf = Aumentando o buffer de recep\u00E7\u00E3o do cliente
+incrTxBuf = Aumentando o buffer de envio do servidor NDT
+information = Informa\u00E7\u00E3o
+initialization = Inicializa\u00E7\u00E3o...
+insufficient = Dados coletados s\u00E3o insuficientes para determinar tipo de link.
+invokingMailtoFunction = Tcpbw100 Chamando fun\u00E7\u00E3o Mailto
+ipProtocol = Protocolo IP
+ipcFail = Comunica\u00E7\u00F5es entre processos falhou, tipo de link desconhecido.
+usingIpv4 = -- Usando endere\u00E7o IPv4
+usingIpv6 = -- Usando endere\u00E7o IPv6
+javaData = Dados Java
+kbyteBufferLimits = KByte buffer que limita a taxa de transfer\u00EAncia para
+limitNet = limitada pela rede em
+limitRx = destinat\u00E1rio limitado
+limitTx = remetende limitado
+linkFullDpx = Link definido/configurado para modo Full Duplex
+linkHalfDpx = Link definido/configurado para modo Half Duplex
+loggingWrongMessage = Logando ao servidor: Tipo errado de mensagem foi recebido
+lookupError = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP remoto
+mboxWrongMessage = Teste Middlebox : Tipo errado de mensagem foi recebido
+middlebox = Middlebox
+middleboxFail = Servidor falhou durante o teste de middlebox
+middleboxFail2 = Teste Middlebox FALHOU!
+middleboxModifyingMss = Informa\u00E7\u00E3o: Middlebox da Rede est\u00E1 modificando a vari\u00E1vel MSS
+middleboxTest = Tcpbw100 teste Middlebox ...
+moreDetails = Mais Detalhes...
+name = Nome
+ndtServerHas = O servidor NDT possui um
+noPktLoss1 = Perda de pacotes n\u00E3o
+noPktLoss2 = N\u00E3o foi observada perda de pacotes
+numberOfTests = N\u00FAmero de testes
+of = de
+off = DESLIGADO
+ok = OK
+oldDuplexMismatch = "Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:"
+on = LIGADO
+ooOrder = mas os pacotes fotam recebidos fora da ordem
+options = Op\u00E7\u00F5es
+osData = Dados do SO:
+otherClient = Outro cliente est\u00E1 sendo servido, seu teste ter\u00E1 in\u00EDcio em
+otherTraffic = Informa\u00E7\u00E3o: Tr\u00E1fego de outras redes est\u00E1 congestionando o link
+outboundTest = Tcpbw100 teste de sa\u00EDda...
+outboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
+packetQueuing = Filas de Pacotes
+packetQueuingInfo = TCP (Protocolo de Controle de Transmiss\u00E3o) transfere dados de forma confi\u00E1vel entre dois\n hosts. Ele automaticamente detecta e recupera de erros\ n e perdas. O TCP usa buffers para prover essa confiabilidade. Al\u00E9m disso, switches e roteadores usam buffers para lidar/gerenciar casos em que v\u00E1rios links enviam pacotes para uma \u00FAnica sa\u00EDda ou a velocuidade do link muda\n (Ethernet R\u00E1pida para modem DSL.\n\n O servidor NDT gera e envia 10 segundos de dados para o cliente. Em\n alguns casos o servidor pode gerar dados mais r\u00E1pido do que enviar pacotes para a rede (ex: um CPU de 2GHz enviando para um cliente conectado a um DSL).\n Quando isso ocorre, alguns pacotes podem ficar enfileiirados na sa\u00EDda do servidor\n quando \u00E9 expirado o tempo de 10 segundos. O TCP automaticamente continuar\u00E1 a enviar esses pacotes enfileirados e o cliente vai continuar aceitando e processando esses pacotes. Isso resulta em um maior tempo de execu\u00E7\u00E3o do teste do cliente. Essa situa\u00E7\u00E3o ocorreu durante esse teste. Nenhuma a\u00E7\u00E3o \u00E9 requerida para\n resolver esse problema.
+packetSizePreserved = O Tamanho do Pacote \u00E9 preservado Fim a Fim
+packetsize = o tamanho do Pacote
+pc = PC
+pctOfTime = % do tempo
+performedTests = Testes executados
+pktsRetrans = pacotes retransmitidos
+possibleDuplexFullHalf = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
+possibleDuplexHalfFull = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
+possibleDuplexHalfFullWarning = Aviso: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
+preferIPv6 = prefira IPv6
+printDetailedStats = Imprima as Estat\u00EDsticas Detalhadas
+protocolError = Erro de Protocolo! Esperado 'prepare', obtido: 0x
+qSeen = teste de taxa de transfer\u00EAncia: Enfileiramento de pacotes detectado
+ready = Tcpbw100 pronto
+receiveBufferShouldBe = Informa\u00E7\u00E3o: O buffer de recep\u00E7\u00E3o deve ser
+receiving = Recebendo resultados...
+reportProblem = Reportar problema
+resultsParseError = Erro ao analisar os resultados do teste!
+resultsTimeout = Aviso! Tempo do cliente expirou ao ler os dados, poss\u00EDvel exist\u00EAncia de uma dupla condi\u00E7\u00E3o de incompatibilidade
+resultsWrongMessage = Resultados dos Testes: Tipos errados de mensagem foram recebidos
+rtt = RTT
+rttFail = Algor\u00EDtmo de detec\u00E7\u00E3o do link falhou devido a excessivos
+runningInboundTest = executando teste de entrada de 10s (servidor para cliente [S2C]) . . . . . .
+runningOutboundTest = executando teste de sa\u00EDda de 10s (cliente para servidor [C2S]) . . . . .
+s2c = S2C
+s2cPacketQueuingDetected = [S2C]: Enfileiramento de pacotes detectados
+s2cThroughput = S2C taxa de transfer\u00EAncia
+s2cThroughputFailed = S2C teste de taxa de transfer\u00EAncia FALHOU!
+sackReceived = Blocos SACK recebidos
+scalingFactors = Fatores de Escala/escalonamento
+seconds = segundos
+server = Servidor
+serverAcksReport = Servidor Acks reporta que o link \u00E9
+serverBusy = Servidor Ocupado: Muitos clientes aguardando na fila do servidor. Por favor, tente novamente mais tarde.
+serverBusy15s = Servidor Ocupado: Por favor, aguarde 15 segundos para a finaliza\u00E7\u00E3o do teste anterior
+serverBusy30s = Servidor Ocupado: Por favor, aguarde 30 segundos para a finaliza\u00E7\u00E3o do teste anterior
+serverBusy60s = Servidor Ocupado: Por favor, aguarde 60 segundos para a finaliza\u00E7\u00E3o do teste anterior
+serverDataReports = Dados do servidor reporta que o link \u00E9
+serverFail = Servidor falhou enquanto recebia dados
+serverIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
+serverIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
+serverNotRunning = Processo do servidor n\u00E3o est\u00E1 executando : inicie o processo web100srv no servidor remoto
+serverSays = Servidor diz
+sfwFail = Teste simples de firewall FALHOU!
+sfwSocketFail = Teste simples de firewall: N\u00E3o pode ser criado socket para escuta
+sfwTest = Teste simples de firewall...
+sfwWrongMessage = Teste simples de firewall: Tipos errados de mensagem foram recebidos
+showOptions = Mostrar op\u00E7\u00F5es
+simpleFirewall = Firewall simples
+sleep10m = Dormindo por 10 min...
+sleep1m = Dormindo por 1 min...
+sleep30m = Dormindo por 30 min...
+sleep5m = Dormindo por 5 min...
+sleep12h = Dormindo por 12 horas...
+sleep1d = Dormindo por 1 dia...
+sleep2h = Dormindo por 2 horas...
+start = INICIAR
+startingTest = Iniciando Teste
+statistics = Estat\u00EDsticas
+stop = PARAR
+stopped = Os testes foram interrompidos!
+stopping = Parando...
+systemFault = Falha do Sistema
+test = Teste
+testsuiteWrongMessage = Negotiating test suite: Tipos errados de mensagem foram recebidos
+theSlowestLink = O link mais lento no caminho fim a fim \u00E9
+theoreticalLimit = O limite te\u00F3rico da rede \u00E9
+thisConnIs = A conex\u00E3o est\u00E1
+timesPktLoss = vezes devido a perda de pacotes
+toMaximizeThroughput = kbytes para maximizar a taxa de transfer\u00EAncia
+troubleReportFrom = Trouble Report from NDT on
+unableToDetectBottleneck = Servidor n\u00E3o conseguiu determinar o tipo de gargalo.
+unableToObtainIP = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP local
+unknownID = ID de teste desconhecido
+unknownServer = Servidor desconhecido
+unsupportedClient = Informa\u00E7\u00E3o: Esse servidor n\u00E3o fornece suporte a essa linha de comando
+vendor = Fabricante
+version = Vers\u00E3o
+versionWrongMessage = Negociando vers\u00E3o do NDT : Tipo errado de mensagem foi recebido
+web100Details = An\u00E1lise detalhada WEB100
+web100KernelVar = Vari\u00E1veis do Kernel WEB100
+web100Stats = Estat\u00EDsticas WEB100 dispon\u00EDveis
+web100Var = Vari\u00E1veis Web100
+web100rtt = Web100 reporta o tempo de Ida e Volta
+web100tcpOpts = Web100 verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
+willImprove = ir\u00E1 melhorar a performance
+workstation = Esta\u00E7\u00E3o de trabalho
+your = Sua
+yourPcHas = Seu PC/Esta\u00E7\u00E3o de Trabalho tem um
+connectingTo = Conectando a
+toRunTest = para executar o teste
=======================================
--- /dev/null
+++ /branches/android/java/Tcpbw100_msgs_ru_RU.properties Wed Jun 9 15:23:05 2010
@@ -0,0 +1,217 @@
+10gbps = 10 \u0413\u0431\u0438\u0442/\u0441\u0435\u043A 10 Gigabit Ethernet/OC-192 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+10mbps = 10 \u041C\u0431\u0438\u0442/\u0441\u0435\u043A Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+10mins = 10 \u043C\u0438\u043D\u0443\u0442
+12hours = 12 \u0447\u0430\u0441\u043E\u0432
+1day = 1 \u0434\u0435\u043D\u044C
+1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 Gigabit Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+1min = 1 \u043C\u0438\u043D
+2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+2hours = 2 \u0447\u0430\u0441\u0430
+30mins = 30 \u043C\u0438\u043D\u0443\u0442
+45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+5mins = 5 \u043C\u0438\u043D\u0443\u0442
+622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+and = \u0438
+architecture = \u0410\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430
+bytes = \u0431\u0430\u0439\u0442
+c2s = C2S
+c2sPacketQueuingDetected = [C2S]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
+c2sThroughput = C2S \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043Da\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
+c2sThroughputFailed = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B !
+cabledsl = \u043A\u0430\u0431\u0435\u043B\u044C\u043D\u044B\u0439 \u043C\u043E\u0434\u0435\u043C
+cablesNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C
+cablesOk = \u0421\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C \u0432 \u043F\u043E\u0440\u044F\u0434\u043A\u0435
+checkingFirewalls = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u044D\u043A\u0440\u0430\u043D\u043E\u0432. . . . . . . . . . . . . . . . . . .
+checkingMiddleboxes = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0441\u0435\u0442\u0438. . . . . . . . . . . . . . . . . .
+clickStart = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C \u0442\u0435\u0441\u0442
+clickStart2 = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
+client = \u041A\u043B\u0438\u0435\u043D\u0442
+client2 = \u041A\u043B\u0438\u0435\u043D\u0442
+clientAcksReport = \u041A\u043B\u0438\u0435\u043D\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u043B\u0438\u043D\u043A
+clientDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E
+clientInfo = \u0414\u0430\u043D\u043D\u044B\u0435 \u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0435
+clientIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
+clientIpNotFound = IP-\u0430\u0434\u0440\u0435\u0441 \u041A\u043B\u0438\u0435\u043D\u0442\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u0414\u043B\u044F IE \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B Java \n \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043C\u0435\u043D\u044E Service \u2013 Network Options - Security - Level, \u043F\u0440\u043E\u043B\u0438\u0441\u0442\u043D\u0438\u0442\u0435 \u0432\u043D\u0438\u0437 \u0434\u043E \n Microsoft VM - Java Permissions \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 Custom, \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435 na Java Custom Settings \n Edit Persmissions - \u0434\u043E\u0441\u0442\u0443\u043F \u043A\u043E \u0432\u0441\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0430\u0434\u0440\u0435\u0441\u0430\u043C, \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 En\u0430ble \u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442e \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F
+clientIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0430\u043D\u0438\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
+clientSays =, \u043D\u043E \u043A\u043B\u0438\u0435\u043D\u0442 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
+close = \u0417\u0430\u043A\u0440\u044B\u0442\u044C
+comments = \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438
+congestNo = \u041F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0430.
+congestYes = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430 \u043F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0442\u0440\u0430\u0444\u0438\u043A\u043E\u043C.
+connIdle = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0445\u043B\u0430\u0436\u0434\u0430\u043B\u043E\u0441\u044C \u0431\u0435\u0437 \u0442\u0440\u0430\u0444\u0438\u043A\u0430
+connStalled = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0441\u0442\u0440\u044F\u043B\u043E
+connected = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043A:
+connectedTo = \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D \u043A
+copy = \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C
+defaultTests = \u0422\u0435\u0441\u0442\u044B \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
+delayBetweenTests = \u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u043C\u0435\u0436\u0434\u0443 \u0442\u0435\u0441\u0442\u0430\u043C\u0438
+detailedStats = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
+dialup = \u043C\u043E\u0434\u0435\u043C
+dialup2 = \u043C\u043E\u0434\u0435\u043C
+done = \u0413\u043E\u0442\u043E\u0432\u043E
+done2 = Tcpbw100 \u0433\u043E\u0442\u043E\u0432\u043E
+dupAcksIn = \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 acks
+duplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
+duplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
+duplexNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0440\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:
+duplexOk = \u041D\u043E\u0440\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u044B \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D.
+endOfEmail = \u041E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+excLoss = \u0427\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u044B\u0435 \u043F\u043E\u0442\u0435\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u044E \u0430\u0432\u0442\u043E-\u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u041F\u041A \u0438 \u043D\u0430 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u043E\u043C \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0435
+excessiveErrors = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C(\u044B).
+firewallNo = \u043D\u0435 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442 \u043F\u0440\u043E\u0448\u043B\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u043E]
+firewallYes = \u0432\u0435\u0440\u043E\u044F\u0442\u043D\u043E \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442\u0443]
+flowControlLimits = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u043F\u043E\u0442\u043E\u043A\u043E\u043C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
+found100mbps = 100 \u041C\u0431\u0438\u0442/\u0441 FastEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found10gbps = 10 \u0413\u0431\u0438\u0442/\u0441 10 GigEthernet/OC-192 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found10mbps = 10 \u041C\u0431\u0438\u0442/\u0441 Ethernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 GigabitEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+found622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+foundDialup = \u041C\u043E\u0434\u0435\u043C\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+foundDsl = \u041A\u0430\u0431\u0435\u043B\u044C\u043D\u043E\u0435 modem/DSL/T1 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
+fullDuplex = \u043F\u043E\u043B\u043D\u043E\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
+general= \u041E\u0431\u0449\u0438\u0435
+generatingReport = \u0413\u043E\u0442\u043E\u0432\u0438\u0442\u0441\u044F \u043E\u0442\u0447\u0435\u0442 \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435: \u0414\u0430\u043D\u043D\u044B\u0439 \u043E\u0442\u0447\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0441\u043B\u0430\u043D \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u043B\u0438\u0446\u0430\u043C
+getWeb100Var = \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
+halfDuplex = \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C ID = TCP/Web100 Network Diagnostic Tool (NDT)
+immediate = \u0441\u0438\u044E \u043C\u0438\u043D\u0443\u0442\u0443
+inboundTest = Tcpbw100 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
+inboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C:\u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+incompatibleVersion = \u041D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F
+incrRxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0435\u043C\u043D\u043E\u0433\u043E \u0431\u0443\u0444\u0435\u0440\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
+incrTxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 NDT
+information = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F
+initialization = \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F ...
+insufficient = \u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0434\u0430\u043D\u043D\u044B\u0445, \u0441\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F.
+invokingMailtoFunction = Tcpbw100 \u0412\u044B\u0437\u043E\u0432 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 Mailto
+ipProtocol = \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B
+ipcFail = \u041C\u0435\u0436\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0431\u044B\u043B\u043E \u043D\u0430\u0440\u0443\u0448\u0435\u043D\u043E, \u0442\u0438\u043F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D.
+usingIpv4 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv4 \u0430\u0434\u0440\u0435\u0441
+usingIpv6 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv6 \u0430\u0434\u0440\u0435\u0441
+javaData = Java \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
+kbyteBufferLimits = \u041A\u0411\u0430\u0439\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
+limitNet = \u0441\u0435\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430
+limitRx = \u043F\u0440\u0438\u0435\u043C\u043D\u0438\u043A \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
+limitTx = \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
+linkFullDpx = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u043D\u044B\u0439 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C
+linkHalfDpx =\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435
+loggingWrongMessage = \u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+lookupError = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441
+mboxWrongMessage = \u0422\u0435\u0441\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+middlebox = \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
+middleboxFail = \u0418\u0421\u0414 \u043D\u0435 \u0441\u043C\u043E\u0433 \u043F\u0440\u043E\u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
+middleboxFail2 = \u0422\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0431\u044B\u043B\u043E \u043E\u0431\u043E\u0440\u0432\u0430\u043D\u043E !
+middleboxModifyingMss = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 MSS(\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430 \u0434\u0430\u043D\u043D\u044B\u0445)
+middleboxTest = Tcpbw100 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438...
+moreDetails = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 ...
+name = \u0438\u043C\u044F
+ndtServerHas = NDT \u0441\u0435\u0440\u0432\u0435\u0440
+noPktLoss1 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E
+noPktLoss2 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0431\u043B\u044E\u0434\u0430\u043B\u043E\u0441\u044C
+numberOfTests = \u0447\u0438\u0441\u043B\u043E \u0442\u0435\u0441\u0442\u043E\u0432
+of =
+off = \u0412\u044B\u043A\u043B
+ok = \u0412\u0432\u0435\u0441\u0442\u0438
+oldDuplexMismatch = \u201C\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0420\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u0441\u043D\u043E\u0432\u0430 \u0431\u044B\u043B\u043E \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:"
+on = \u0412\u043A\u043B
+ooOrder = \u043D\u043E \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0440\u0438\u0431\u044B\u043B\u0438 \u0432\u043D\u0435 \u043F\u043E\u0440\u044F\u0434\u043A\u0430
+options = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432
+osData = \u0414\u0430\u043D\u043D\u044B\u0435 \u041E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0439 \u0421\u0438\u0441\u0442\u0435\u043C\u044B:
+otherClient = \u0414\u0440\u0443\u0433\u043E\u0439 \u043A\u043B\u0438\u0435\u043D\u0442 \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F, \u0432\u0430\u0448 \u0442\u0435\u0441\u0442 \u043D\u0430\u0447\u043D\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435
+otherTraffic = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043A \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043B\u0438\u043D\u043A
+outboundTest = Tcpbw100 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
+outboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+packetQueuing = \u041D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
+packetQueuingInfo = TCP (Transmission Control Protocol) \u043D\u0430\u0434\u0435\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043C\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043C\u044F\n \u0445\u043E\u0441\u0442\u0430\u043C\u0438 \u0432 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0435. \u041E\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u043E\u0448\u0438\u0431\u043E\u043A \u0438\n \u043F\u043E\u0442\u0435\u0440\u044C. TCP \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044E \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442\u044C \u044D\u0442\u0443 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0441\u0442\u044C. \u041A\u0440\u043E\u043C\u0435 \u0442\u043E\u0433\u043E,\n \u0432 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043A\u043E\u043C\u043C\u0443\u0442\u0430\u0442\u043E\u0440\u0430\u0445 \u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043E\u0440\u0430\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u0432 \u0441\u043B\u0443\u0447\u0430\u044F\u0445, \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439 \n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442 \u043F\u0430\u043A\u0435\u0442\u044B \u0432 \u043E\u0434\u043D\u043E \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0435 \u0438\u043B\u0438 \u043A\u043E\u0433\u0434\u0430 \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \n (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0441 FastEthernet \u0434\u043E DSL \u043C\u043E\u0434\u0435\u043C\u0430).\n\n NDT \u0441\u0435\u0440\u0432\u0435\u0440 \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u0442 \u043A\u0430\u0436\u0434\u044B\u0435 10 \u0441\u0435\u043A\u0443\u043D\u0434 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0443.\n \u0412 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445 \u0441\u0435\u0440\u0432\u0435\u0440 \u043C\u043E\u0436\u0435\u0442 \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0431\u044B\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043C \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0441\u044B\u043B\u0430\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B\n \u0432 \u0441\u0435\u0442\u044C (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u043E\u043C 2 \u0413\u0413\u0446 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0433\u043E \u0434\u0430\u043D\u043D\u044B\u0435 \u043D\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 DSL).\n \u041A\u043E\u0433\u0434\u0430 \u044D\u0442\u043E \u0441\u043B\u0443\u0447\u0430\u0435\u0442\u0441\u044F, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0430\u043A\u0435\u0442\u044B \u043C\u043E\u0433\u0443\u0442 \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u0439 \u043E\u0447\u0435\u0440\u0435\u0434\u044C\u044C\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\n \u0434\u0430\u0436\u0435 \u043A\u043E\u0433\u0434\u0430 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0430\u0439\u043C\u0435\u0440 \u0438\u0441\u0442\u0435\u0447\u0435\u0442. TCP \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u044D\u0442\u0438 \u043F\u0430\u043A\u0435\u0442\u044B \u0438\u0437 \u043E\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u043A\u043B\u0438\u0435\u043D\u0442 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u0438\n \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u044D\u0442\u0438 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u044B. \u042D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043A\n \u0442\u043E\u043C\u0443 \u0447\u0442\u043E \u0442\u0435\u0441\u0442 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u0442\u044F\u043D\u0443\u0442\u044C\u0441\u044F.\n\n \u042D\u0442\u043E \u0441\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0435\u0441\u0442\u0430. \u041D\u0438\u043A\u0430\u043A\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043F\u0440\u0435\u0434\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E\u0431\u044B\n \u0440\u0435\u0448\u0438\u0442\u044C \u044D\u0442\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443.
+packetSizePreserved = \u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0441\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
+packetsize = \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430
+pc = \u041F\u041A
+pctOfTime =% \u0432\u0440\u0435\u043C\u0435\u043D\u0438
+performedTests = \u0417\u0430\u043A\u043E\u043D\u0447\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u0441\u0442\u044B
+pktsRetrans = \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0435\u0440\u0435\u0441\u043B\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E
+possibleDuplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
+possibleDuplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
+possibleDuplexHalfFullWarning = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
+preferIPv6 = \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0435\u043D\u0438\u0435 IPv6
+printDetailedStats = \u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u0442\u044C \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0443
+protocolError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430! \u041E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C 'prepare', \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u0438: 0x
+qSeen = \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
+ready = Tcpbw100 \u0433\u043E\u0442\u043E\u0432
+receiveBufferShouldBe = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u0438\u0435\u043C\u043D\u044B\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C
+receiving = \u041F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 ...
+reportProblem = \u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435
+resultsParseError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F!
+resultsTimeout = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435! \u041A\u043B\u0438\u0435\u043D\u0442 \u043E\u0442\u0432\u0430\u043B\u0438\u043B\u0441\u044F \u043F\u043E \u0442\u0430\u0439\u043C-\u0430\u0443\u0442\u0443 \u043F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043D\u0435\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430
+resultsWrongMessage = \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+rtt = RTT
+rttFail = \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u044F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B \u0438\u0437-\u0437\u0430 \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0439 \u0434\u0432\u0443\u0445\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 (RTT).
+runningInboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043E\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043A \u043A\u043B\u0438\u0435\u043D\u0442\u0443 [S2C]). . . . . .
+runningOutboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043A\u043B\u0438\u0435\u043D\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 [C2S]). . . . .
+S2C = S2C
+s2cPacketQueuingDetected = [S2C]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
+s2cThroughput = S2C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
+s2cThroughputFailed = S2C \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u041D\u0415 \u0421\u0420\u0410\u0411\u041E\u0422\u0410\u041B !
+sackReceived = \u0431\u043B\u043E\u043A\u0438 SACK \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B
+scalingFactors = \u0424\u0430\u043A\u0442\u043E\u0440\u044B \u041C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F
+seconds = \u0441\u0435\u043A\u0443\u043D\u0434
+server = \u0421\u0435\u0440\u0432\u0435\u0440
+serverAcksReport = \u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0442\u0432\u0435\u0442\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
+serverBusy = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 \u043E\u0436\u0438\u0434\u0430\u044E\u0442 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0436\u0435
+serverBusy15s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 15 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
+serverBusy30s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 30 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
+serverBusy60s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 60 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
+serverDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u0441 \u0421\u0435\u0440\u0432\u0435\u0440\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
+serverFail Server = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445
+serverIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
+serverIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
+serverNotRunning = \u0421\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442: \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 web100srv \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u043C \u0441\u0435\u0440\u0432\u0435\u0440\u0435
+serverSays = \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
+sfwFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D \u041D\u0415 \u041F\u0420\u041E\u0428\u0415\u041B!
+sfwSocketFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (socket)
+sfwTest = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D...
+sfwWrongMessage = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+showOptions = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
+simpleFirewall = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D
+sleep10m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 10 \u043C\u0438\u043D\u0443\u0442 ...
+sleep1m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u043C\u0438\u043D ...
+sleep30m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 30 \u043C\u0438\u043D\u0443\u0442 ...
+sleep5m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 5 \u043C\u0438\u043D\u0443\u0442 ...
+sleep12h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 12 \u0447\u0430\u0441\u043E\u0432 ...
+sleep1d = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u0434\u0435\u043D\u044C ...
+sleep2h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 2 \u0447\u0430\u0441\u0430 ...
+start = \u0421\u0422\u0410\u0420\u0422
+startingTest = \u041D\u0430\u0447\u0438\u043D\u0430\u0435\u043C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
+statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
+stop = \u0421\u0422\u041E\u041F
+stopped = \u0422\u0435\u0441\u0442\u044B \u0431\u044B\u043B\u0438 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u044B!
+stopping = O\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C\u0441\u044F...
+systemFault = \u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0430\u044F \u043D\u0435\u043F\u043E\u043B\u0430\u0434\u043A\u0430
+test = \u0422\u0415\u0421\u0422
+testsuiteWrongMessage = \u041E\u0431\u043C\u0435\u043D \u0441\u043E\u043E\u0431\u0448\u0435\u043D\u0438\u0439 \u043E \u043D\u0430\u0431\u043E\u0440\u0435 \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+theSlowestLink = \u0421\u0430\u043C\u043E\u0435 \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u0435 \u0437\u0432\u0435\u043D\u043E \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0442\u044F\u0436\u0435\u043D\u0438\u0438 \u0441\u0435\u0442\u0438
+theoreticalLimit = \u0422\u0435\u043E\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u043F\u0440\u0435\u0434\u0435\u043B \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u043E\u0439 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0442\u0438
+thisConnIs = \u042D\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
+timesPktLoss = \u0440\u0430\u0437 \u0438\u0437-\u0437\u0430 \u043F\u043E\u0442\u0435\u0440\u0438 \u043F\u0430\u043A\u0435\u0442\u043E\u0432
+toMaximizeThroughput = \u043A\u0431\u0430\u0439\u0442 \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438
+troubleReportFrom = \u041E\u0442\u0447\u0435\u0442 \u0418\u0421\u0414 \u043E \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u0445 \u043D\u0430
+unableToDetectBottleneck = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0442\u0438\u043F \u0441\u0435\u0442\u0435\u0432\u043E\u0433\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0430 \u0441\u0430\u043C\u043E\u043C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u043C \u0437\u0432\u0435\u043D\u0435 \u0441\u0435\u0442\u0438.
+unableToObtainIP = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 IP \u0430\u0434\u0440\u0435\u0441
+unknownID = \u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440(ID) \u0442\u0435\u0441\u0442\u0430
+unknownServer = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043D
+unsupportedClient = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044D\u0442\u043E\u0433\u043E \u043A\u043E\u043C\u043C\u0430\u043D\u0434\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0430
+vendor = \u041F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C
+version = \u0412\u0435\u0440\u0441\u0438\u044F
+versionWrongMessage = \u0412\u044B\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0418\u0421\u0414: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
+web100Details = WEB100 \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0439 \u041E\u0442\u0447\u0435\u0442
+web100KernelVar = WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u044F\u0434\u0440\u0430
+web100Stats = WEB100 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430
+web100Var = WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
+web100rtt = WEB100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u0443\u0434\u0430-\u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0435 (RTT)
+web100tcpOpts = WEB100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u043E\u043C \u0447\u0442\u043E \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0435 \u043E\u0431\u043C\u0435\u043D\u0430 TCP \u0431\u044B\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438:
+willImprove = \u043F\u043E\u0437\u0432\u043E\u043B\u0438\u0442 \u043F\u043E\u0432\u044B\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
+workstation = \u0420\u0430\u0431\u043E\u0447\u0430\u044F \u0421\u0442\u0430\u043D\u0446\u0438\u044F
+your = \u0412\u0430\u0448
+yourPcHas = \u0423 \u0412\u0430\u0448\u0435\u0433\u043E \u041F\u041A/\u0420\u0430\u0431\u043E\u0447\u0435\u0439 \u0421\u0442\u0430\u043D\u0446\u0438\u0438 \u0435\u0441\u0442\u044C
+connectingTo = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u0441\u044F \u043A
+toRunTest = \u043F\u0440\u043E\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u0441\u0442
=======================================
--- /dev/null
+++ /branches/android/java/net/measurementlab/ndt/NdtTests.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,1915 @@
+/*
+Copyright 2003 University of Chicago. All rights reserved.
+The Web100 Network Diagnostic Tool (NDT) is distributed subject to
+the following license conditions:
+SOFTWARE LICENSE AGREEMENT
+Software: Web100 Network Diagnostic Tool (NDT)
+
+1. The "Software", below, refers to the Web100 Network Diagnostic Tool (NDT)
+(in either source code, or binary form and accompanying documentation). Each
+licensee is addressed as "you" or "Licensee."
+
+2. The copyright holder shown above hereby grants Licensee a royalty-free
+nonexclusive license, subject to the limitations stated herein and U.S. Government
+license rights.
+
+3. You may modify and make a copy or copies of the Software for use within your
+organization, if you meet the following conditions:
+ a. Copies in source code must include the copyright notice and this Software
+ License Agreement.
+ b. Copies in binary form must include the copyright notice and this Software
+ License Agreement in the documentation and/or other materials provided with the copy.
+
+4. You may make a copy, or modify a copy or copies of the Software or any
+portion of it, thus forming a work based on the Software, and distribute copies
+outside your organization, if you meet all of the following conditions:
+ a. Copies in source code must include the copyright notice and this
+ Software License Agreement;
+ b. Copies in binary form must include the copyright notice and this
+ Software License Agreement in the documentation and/or other materials
+ provided with the copy;
+ c. Modified copies and works based on the Software must carry prominent
+ notices stating that you changed specified portions of the Software.
+
+5. Portions of the Software resulted from work developed under a U.S. Government
+contract and are subject to the following license: the Government is granted
+for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable
+worldwide license in this computer software to reproduce, prepare derivative
+works, and perform publicly and display publicly.
+
+6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY
+OF ANY KIND. THE COPYRIGHT HOLDER, THE UNITED STATES, THE UNITED STATES
+DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT,
+(2) DO NOT ASSUME ANY LEGAL LIABILITY OR RESPONSIBILITY FOR THE ACCURACY,
+COMPLETENESS, OR USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE
+OF THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT
+THAT THE SOFTWARE WILL FUNCTION UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT
+ANY ERRORS WILL BE CORRECTED.
+
+7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDER, THE
+UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, OR THEIR EMPLOYEES:
+BE LIABLE FOR ANY INDIRECT, INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE
+DAMAGES OF ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS
+OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED
+ON THE BASIS OF CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR
+OTHERWISE, EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF
+SUCH LOSS OR DAMAGES.
+The Software was developed at least in part by the University of Chicago,
+as Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).
+ */
+
+package net.measurementlab.ndt;
+
+import java.io.*;
+import java.net.*;
+import java.util.*;
+
+public class NdtTests implements Runnable {
+ public static final String VERSION = "3.6.3";
+
+ // Network (physical layer) types
+ public static final String NETWORK_WIFI = "WIFI";
+ public static final String NETWORK_MOBILE = "MOBILE";
+ public static final String NETWORK_WIRED = "WIRED";
+ public static final String NETWORK_UNKNOWN = "UNKNOWN";
+
+ private static final byte TEST_MID = (1 << 0);
+ private static final byte TEST_C2S = (1 << 1);
+ private static final byte TEST_S2C = (1 << 2);
+ private static final byte TEST_SFW = (1 << 3);
+ private static final byte TEST_STATUS = (1 << 4);
+
+ /* we really should do some clean-up in this java code... maybe later ;) */
+ private static final byte COMM_FAILURE = 0;
+ private static final byte SRV_QUEUE = 1;
+ private static final byte MSG_LOGIN = 2;
+ private static final byte TEST_PREPARE = 3;
+ private static final byte TEST_START = 4;
+ private static final byte TEST_MSG = 5;
+ private static final byte TEST_FINALIZE = 6;
+ private static final byte MSG_ERROR = 7;
+ private static final byte MSG_RESULTS = 8;
+ private static final byte MSG_LOGOUT = 9;
+ private static final byte MSG_WAITING = 10;
+
+ private static final int SFW_NOTTESTED = 0;
+ private static final int SFW_NOFIREWALL = 1;
+ private static final int SFW_UNKNOWN = 2;
+ private static final int SFW_POSSIBLE = 3;
+
+ private static final double VIEW_DIFF = 0.1;
+
+ private static final int CONTROL_PORT = 3001;
+
+ private TextOutputAdapter diagnosis, statistics, results;
+
+ String errmsg;
+ boolean failed;
+ URL location;
+ String s;
+ double t;
+ int ECNEnabled, NagleEnabled, MSSSent, MSSRcvd;
+ int SACKEnabled, TimestampsEnabled, WinScaleRcvd, WinScaleSent;
+ int FastRetran, AckPktsOut, SmoothedRTT, CurrentCwnd, MaxCwnd;
+ int SndLimTimeRwin, SndLimTimeCwnd, SndLimTimeSender;
+ int SndLimTransRwin, SndLimTransCwnd, SndLimTransSender, MaxSsthresh;
+ int SumRTT, CountRTT, CurrentMSS, Timeouts, PktsRetrans;
+ int SACKsRcvd, DupAcksIn, MaxRwinRcvd, MaxRwinSent;
+ int DataPktsOut, Rcvbuf, Sndbuf, AckPktsIn, DataBytesOut;
+ int PktsOut, CongestionSignals, RcvWinScale;
+ int pkts, lth=8192, CurrentRTO;
+ int c2sData, c2sAck, s2cData, s2cAck;
+
+ String emailText;
+ double s2cspd, c2sspd, sc2sspd, ss2cspd;
+ int ssndqueue;
+ double sbytes;
+
+ int half_duplex, congestion, bad_cable, mismatch;
+ double mylink;
+ double loss, estimate, avgrtt, spd, waitsec, timesec, rttsec;
+ double order, rwintime, sendtime, cwndtime, rwin, swin, cwin;
+ double aspd;
+
+ String tmpstr, tmpstr2;
+ byte tests = TEST_MID | TEST_C2S | TEST_S2C | TEST_SFW | TEST_STATUS;
+ int c2sResult = SFW_NOTTESTED;
+ int s2cResult = SFW_NOTTESTED;
+
+ private ResourceBundle messages;
+
+ private final String host;
+ private final UiServices uiServices;
+ private final String networkType;
+
+ /*
+ * Initializes the network test thread.
+ *
+ * @param host hostname of the test server
+ * @param uiServices object for UI interaction
+ * @param networkType indicates the type of network, e.g. 3G, Wifi, Wired, etc.
+ */
+ public NdtTests(String host, UiServices uiServices, String networkType) {
+ this.host = host;
+ this.uiServices = uiServices;
+ this.networkType = networkType;
+ diagnosis = new TextOutputAdapter(uiServices, UiServices.DIAG_VIEW);
+ statistics = new TextOutputAdapter(uiServices, UiServices.STAT_VIEW);
+ results = new TextOutputAdapter(uiServices, UiServices.MAIN_VIEW);
+ try {
+ messages = ResourceBundle.getBundle("Tcpbw100_msgs", Locale.getDefault());
+ } catch (MissingResourceException e) {
+ // Fall back to US English if the locale we want is missing
+ messages = ResourceBundle.getBundle("Tcpbw100_msgs", new Locale("en", "US"));
+ }
+ }
+
+ public void run() {
+ uiServices.onBeginTest();
+ try {
+ dottcp();
+ } catch (IOException e) {
+ uiServices.logError("Error running test: " + e);
+ failed = true;
+ errmsg = messages.getString("serverBusy30s") + "\n";
+ }
+ if (failed) {
+ uiServices.logError(errmsg);
+ uiServices.onFailure(errmsg);
+ }
+ // Finish the Test
+ uiServices.onEndTest();
+ return;
+ }
+
+ class Message {
+ byte type;
+ byte[] body;
+ }
+
+ class Protocol {
+ private InputStream _ctlin;
+ private OutputStream _ctlout;
+
+ public Protocol(Socket ctlSocket) throws IOException
+ {
+ _ctlin = ctlSocket.getInputStream();
+ _ctlout = ctlSocket.getOutputStream();
+ }
+
+ public void send_msg(byte type, byte toSend) throws IOException
+ {
+ byte[] tab = new byte[] { toSend };
+ send_msg(type, tab);
+ }
+
+ public void send_msg(byte type, byte[] tab) throws IOException
+ {
+ byte[] header = new byte[3];
+ header[0] = type;
+ header[1] = (byte) (tab.length >> 8);
+ header[2] = (byte) tab.length;
+
+ _ctlout.write(header);
+ _ctlout.write(tab);
+ }
+
+ public int readn(Message msg, int amount) throws IOException
+ {
+ int read = 0;
+ int tmp;
+ msg.body = new byte[amount];
+ while (read != amount) {
+ tmp = _ctlin.read(msg.body, read, amount - read);
+ if (tmp <= 0) {
+ return read;
+ }
+ read += tmp;
+ }
+ return read;
+ }
+
+ public int recv_msg(Message msg) throws IOException
+ {
+ int length;
+ if (readn(msg, 3) != 3) {
+ return 1;
+ }
+ msg.type = msg.body[0];
+ length = ((int) msg.body[1] & 0xFF) << 8;
+ length += (int) msg.body[2] & 0xFF;
+ if (readn(msg, length) != length) {
+ return 3;
+ }
+ return 0;
+ }
+
+ public void close()
+ {
+ try {
+ _ctlin.close();
+ _ctlout.close();
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public boolean test_mid(Protocol ctl) throws IOException
+ {
+ byte buff[] = new byte[8192];
+ Message msg = new Message();
+ if ((tests & TEST_MID) == TEST_MID) {
+ /* now look for middleboxes (firewalls, NATs, and other boxes that
+ * muck with TCP's end-to-end priciples
+ */
+ showStatus(messages.getString("middleboxTest"));
+ results.append(messages.getString("checkingMiddleboxes") + " ");
+ statistics.append(messages.getString("checkingMiddleboxes") + " ");
+ emailText = messages.getString("checkingMiddleboxes") + " ";
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_PREPARE) {
+ errmsg = messages.getString("mboxWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ int midport = Integer.parseInt(new String(msg.body));
+
+ Socket in2Socket = null;
+ try {
+ in2Socket = new Socket(host, midport);
+ } catch (UnknownHostException e) {
+ uiServices.logError("Don't know about host: " + host);
+ errmsg = messages.getString("unknownServer") + "\n" ;
+ return true;
+ } catch (IOException e) {
+ uiServices.logError("Couldn't perform middlebox testing to: " + host);
+ errmsg = messages.getString("middleboxFail") + "\n" ;
+ return true;
+ }
+
+ InputStream srvin2 = in2Socket.getInputStream();
+ OutputStream srvout2 = in2Socket.getOutputStream();
+
+ int largewin = 128*1024;
+
+ in2Socket.setSoTimeout(6500);
+ int bytes = 0;
+ int inlth;
+ t = System.currentTimeMillis();
+ uiServices.setVariable("pub_TimeStamp", new Date());
+
+ try {
+ while ((inlth=srvin2.read(buff,0,buff.length)) > 0) {
+ bytes += inlth;
+ if ((System.currentTimeMillis() - t) > 5500)
+ break;
+ }
+ }
+ catch (IOException e) {}
+
+ t = System.currentTimeMillis() - t;
+ System.out.println(bytes + " bytes " + (8.0 * bytes)/t + " kb/s " + t/1000 + " secs");
+ s2cspd = ((8.0 * bytes) / 1000) / t;
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_MSG) {
+ errmsg = messages.getString("mboxWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ tmpstr2 = new String(msg.body);
+
+ String tmpstr4 = Double.toString(s2cspd*1000);
+ System.out.println("Sending '" + tmpstr4 + "' back to server");
+ ctl.send_msg(TEST_MSG, tmpstr4.getBytes());
+
+ try {
+ tmpstr2 += in2Socket.getInetAddress() + ";";
+ } catch (SecurityException e) {
+ uiServices.logError("Unable to obtain Servers IP addresses: using " + host);
+ errmsg = "getInetAddress() called failed\n" ;
+ tmpstr2 += host + ";";
+ results.append(messages.getString("lookupError") + "\n");
+ }
+
+ uiServices.logError("calling in2Socket.getLocalAddress()");
+ try {
+ tmpstr2 += in2Socket.getLocalAddress() + ";";
+ } catch (SecurityException e) {
+ uiServices.logError("Unable to obtain local IP address: using 127.0.0.1");
+ errmsg = "getLocalAddress() call failed\n" ;
+ tmpstr2 += "127.0.0.1;";
+ }
+
+ srvin2.close();
+ srvout2.close();
+ in2Socket.close();
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_FINALIZE) {
+ errmsg = messages.getString("mboxWrongMessage");
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ results.append(messages.getString("done") + "\n");
+ statistics.append(messages.getString("done") + "\n");
+ emailText += messages.getString("done") + "\n%0A";
+ }
+ return false;
+ }
+
+ public boolean test_sfw(Protocol ctl) throws IOException
+ {
+ Message msg = new Message();
+ if ((tests & TEST_SFW) == TEST_SFW) {
+ showStatus(messages.getString("sfwTest"));
+ results.append(messages.getString("checkingFirewalls") + " ");
+ statistics.append(messages.getString("checkingFirewalls") + " ");
+ emailText = messages.getString("checkingFirewalls") + " ";
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_PREPARE) {
+ errmsg = messages.getString("sfwWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+
+ String message = new String(msg.body);
+
+ int srvPort, testTime;
+ try {
+ int k = message.indexOf(" ");
+ srvPort = Integer.parseInt(message.substring(0,k));
+ testTime = Integer.parseInt(message.substring(k+1));
+ }
+ catch (Exception e) {
+ errmsg = messages.getString("sfwWrongMessage") + "\n";
+ return true;
+ }
+
+ System.out.println("SFW: port=" + srvPort);
+ System.out.println("SFW: testTime=" + testTime);
+
+ ServerSocket srvSocket;
+ try {
+ SecurityManager security = System.getSecurityManager();
+ if (security != null) {
+ System.out.println("Asking security manager for listen permissions...");
+ security.checkListen(0);
+ }
+ srvSocket = new ServerSocket(0);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ errmsg = messages.getString("sfwSocketFail") + "\n";
+ return true;
+ }
+
+ System.out.println("SFW: oport=" + srvSocket.getLocalPort());
+ ctl.send_msg(TEST_MSG, Integer.toString(srvSocket.getLocalPort()).getBytes());
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_START) {
+ errmsg = messages.getString("sfwWrongMessage");
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+
+ OsfwWorker osfwTest = new OsfwWorker(srvSocket, testTime);
+ new Thread(osfwTest).start();
+
+ Socket sfwSocket = new Socket();
+ try {
+ sfwSocket.connect(new InetSocketAddress(host, srvPort), testTime * 1000);
+
+ Protocol sfwCtl = new Protocol(sfwSocket);
+ sfwCtl.send_msg(TEST_MSG, new String("Simple firewall test").getBytes());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_MSG) {
+ errmsg = messages.getString("sfwWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ c2sResult = Integer.parseInt(new String(msg.body));
+
+ osfwTest.finalize();
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_FINALIZE) {
+ errmsg = messages.getString("sfwWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ results.append(messages.getString("done") + "\n");
+ statistics.append(messages.getString("done") + "\n");
+ emailText += messages.getString("done") + "\n%0A";
+ }
+ return false;
+ }
+
+ public boolean test_c2s(Protocol ctl) throws IOException
+ {
+ // byte buff2[] = new byte[8192];
+ byte buff2[] = new byte[64*1024];
+ Message msg = new Message();
+ if ((tests & TEST_C2S) == TEST_C2S) {
+ showStatus(messages.getString("outboundTest"));
+ results.append(messages.getString("runningOutboundTest") + " ");
+ statistics.append(messages.getString("runningOutboundTest") + " ");
+ emailText += messages.getString("runningOutboundTest") + " ";
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_PREPARE) {
+ errmsg = messages.getString("outboundWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ int c2sport = Integer.parseInt(new String(msg.body));
+
+ Socket outSocket = null;
+ try {
+ outSocket = new Socket(host, c2sport);
+ } catch (UnknownHostException e) {
+ uiServices.logError("Don't know about host: " + host);
+ errmsg = messages.getString("unknownServer") + "\n" ;
+ return true;
+ } catch (IOException e) {
+ uiServices.logError("Couldn't get 2nd connection to: " + host);
+ errmsg = messages.getString("serverBusy15s") + "\n";
+ return true;
+ }
+
+ // Get server IP address from the outSocket.
+ uiServices.setVariable("pub_host", outSocket.getInetAddress().getHostAddress().toString());
+
+
+ OutputStream out = outSocket.getOutputStream();
+
+ // wait here for signal from server application
+ // This signal tells the client to start pumping out data
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_START) {
+ errmsg = messages.getString("outboundWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+
+ Random rng = new Random();
+ byte c = '0';
+ int i;
+ for (i=0; i<lth; i++) {
+ if (c == 'z')
+ c = '0';
+ buff2[i] = c++;
+ }
+ uiServices.logError("Send buffer size =" + i);
+ outSocket.setSoTimeout(15000);
+ pkts = 0;
+ t = System.currentTimeMillis();
+ double stop_time = t + 10000; // ten seconds
+ do {
+ // if (Randomize) rng.nextBytes(buff2);
+ try {
+ out.write(buff2, 0, buff2.length);
+ }
+ catch (SocketException e) {
+ System.out.println(e);
+ break;
+ }
+ pkts++;
+ } while (System.currentTimeMillis() < stop_time);
+
+ t = System.currentTimeMillis() - t;
+ if (t == 0) {
+ t = 1;
+ }
+ out.close();
+ outSocket.close();
+ System.out.println((8.0 * pkts * lth) / t + " kb/s outbound");
+ c2sspd = ((8.0 * pkts * lth) / 1000) / t;
+ /* receive the c2sspd from the server */
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_MSG) {
+ errmsg = messages.getString("outboundWrongMessage");
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ String tmpstr3 = new String(msg.body);
+ sc2sspd = Double.parseDouble(tmpstr3) / 1000.0;
+
+ if (sc2sspd < 1.0) {
+ results.append(prtdbl(sc2sspd*1000) + "kb/s\n");
+ statistics.append(prtdbl(sc2sspd*1000) + "kb/s\n");
+ emailText += prtdbl(sc2sspd*1000) + "kb/s\n%0A";
+ }
+ else {
+ results.append(prtdbl(sc2sspd) + "Mb/s\n");
+ statistics.append(prtdbl(sc2sspd) + "Mb/s\n");
+ emailText += prtdbl(sc2sspd) + "Mb/s\n%0A";
+ }
+
+ // Expose upload speed to JavaScript clients
+ uiServices.setVariable("pub_c2sspd", sc2sspd);
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_FINALIZE) {
+ errmsg = messages.getString("outboundWrongMessage");
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public boolean test_s2c(Protocol ctl, Socket ctlSocket) throws IOException
+ {
+ byte buff[] = new byte[8192];
+ Message msg = new Message();
+ if ((tests & TEST_S2C) == TEST_S2C) {
+ showStatus(messages.getString("inboundTest"));
+ results.append(messages.getString("runningInboundTest") + " ");
+ statistics.append(messages.getString("runningInboundTest") + " ");
+ emailText += messages.getString("runningInboundTest") + " ";
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_PREPARE) {
+ errmsg = messages.getString("inboundWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ int s2cport = Integer.parseInt(new String(msg.body));
+
+ Socket inSocket;
+ try {
+ inSocket = new Socket(host, s2cport);
+ }
+ catch (UnknownHostException e) {
+ uiServices.logError("Don't know about host: " + host);
+ errmsg = "unknown server\n" ;
+ return true;
+ }
+ catch (IOException e) {
+ uiServices.logError("Couldn't get 3rd connection to: " + host);
+ errmsg = "Server Failed while receiving data\n" ;
+ return true;
+ }
+
+ InputStream srvin = inSocket.getInputStream();
+ int bytes = 0;
+ int inlth;
+
+ // wait here for signal from server application
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("unknownServer") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_START) {
+ errmsg = messages.getString("serverFail") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+
+ inSocket.setSoTimeout(15000);
+ t = System.currentTimeMillis();
+
+ try {
+ while ((inlth=srvin.read(buff,0,buff.length)) > 0) {
+ bytes += inlth;
+ if ((System.currentTimeMillis() - t) > 14500)
+ break;
+ }
+ }
+ catch (IOException e) {}
+
+ t = System.currentTimeMillis() - t;
+ System.out.println(bytes + " bytes " + (8.0 * bytes)/t + " kb/s " + t/1000 + " secs");
+ s2cspd = ((8.0 * bytes) / 1000) / t;
+
+ /* receive the s2cspd from the server */
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type != TEST_MSG) {
+ errmsg = messages.getString("inboundWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ try {
+ String tmpstr3 = new String(msg.body);
+ int k1 = tmpstr3.indexOf(" ");
+ int k2 = tmpstr3.substring(k1+1).indexOf(" ");
+ ss2cspd = Double.parseDouble(tmpstr3.substring(0, k1)) / 1000.0;
+ ssndqueue = Integer.parseInt(tmpstr3.substring(k1+1).substring(0, k2));
+ sbytes = Double.parseDouble(tmpstr3.substring(k1+1).substring(k2+1));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ errmsg = messages.getString("inboundWrongMessage") + "\n";
+ return true;
+ }
+
+ if (s2cspd < 1.0) {
+ results.append(prtdbl(s2cspd*1000) + "kb/s\n");
+ statistics.append(prtdbl(s2cspd*1000) + "kb/s\n");
+ emailText += prtdbl(s2cspd*1000) + "kb/s\n%0A";
+ } else {
+ results.append(prtdbl(s2cspd) + "Mb/s\n");
+ statistics.append(prtdbl(s2cspd) + "Mb/s\n");
+ emailText += prtdbl(s2cspd) + "Mb/s\n%0A";
+ }
+
+
+ // Expose download speed to JavaScript clients
+ uiServices.setVariable("pub_s2cspd", s2cspd);
+
+ srvin.close();
+ inSocket.close();
+
+ buff = Double.toString(s2cspd*1000).getBytes();
+ String tmpstr4 = new String(buff, 0, buff.length);
+ System.out.println("Sending '" + tmpstr4 + "' back to server");
+ ctl.send_msg(TEST_MSG, buff);
+
+ /* get web100 variables from server */
+ tmpstr = "";
+ int i = 0;
+
+ // Try setting a 5 second timer here to break out if the read fails.
+ ctlSocket.setSoTimeout(5000);
+ try {
+ for (;;) {
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ return true;
+ }
+ if (msg.type == TEST_FINALIZE) {
+ break;
+ }
+ if (msg.type != TEST_MSG) {
+ errmsg = messages.getString("inboundWrongMessage") + "\n";
+ if (msg.type == MSG_ERROR) {
+ errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
+ }
+ return true;
+ }
+ tmpstr += new String(msg.body);
+ i++;
+ }
+ } catch (IOException e) {}
+ ctlSocket.setSoTimeout(0);
+ }
+ return false;
+ }
+
+ private void dottcp() throws IOException {
+ Socket ctlSocket = null;
+ int ctlport = CONTROL_PORT;
+ double wait2;
+ int sbuf, rbuf;
+ int i, wait, swait=0;
+
+ failed = false;
+
+ try {
+
+ // RAC Debug message
+ results.append(messages.getString("connectingTo") + " '" + host + "' [" + InetAddress.getByName(host) + "] " + messages.getString("toRunTest") + "\n");
+
+ ctlSocket = new Socket(host, ctlport);
+ } catch (UnknownHostException e) {
+ uiServices.logError("Don't know about host: " + host);
+ errmsg = messages.getString("unknownServer") + "\n" ;
+ failed = true;
+ return;
+ } catch (IOException e) {
+ uiServices.logError("Couldn't get the connection to: " + host + " " +ctlport);
+ errmsg = messages.getString("serverNotRunning") + " (" + host + ":" + ctlport + ")\n" ;
+ failed = true;
+ return;
+ }
+ Protocol ctl = new Protocol(ctlSocket);
+ Message msg = new Message();
+ uiServices.incrementProgress();
+
+ /* The beginning of the protocol */
+
+ if (ctlSocket.getInetAddress() instanceof Inet6Address) {
+ results.append(messages.getString("connected") + " " + host + messages.getString("usingIpv6") + "\n");
+ }
+ else {
+ results.append(messages.getString("connected") + " " + host + messages.getString("usingIpv4") + "\n");
+ }
+
+ /* write our test suite request */
+ ctl.send_msg(MSG_LOGIN, tests);
+ /* read the specially crafted data that kicks off the old clients */
+ if (ctl.readn(msg, 13) != 13) {
+ errmsg = messages.getString("unsupportedClient") + "\n";
+ failed = true;
+ return;
+ }
+
+ for (;;) {
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ failed = true;
+ return;
+ }
+ if (msg.type != SRV_QUEUE) {
+ errmsg = messages.getString("loggingWrongMessage") + "\n";
+ failed = true;
+ return;
+ }
+ String tmpstr3 = new String(msg.body);
+ wait = Integer.parseInt(tmpstr3);
+ System.out.println("wait flag received = " + wait);
+
+ if (wait == 0) {
+ break;
+ }
+
+ if (wait == 9988) {
+ if (swait == 0) {
+ errmsg = messages.getString("serverBusy") + "\n";
+ failed = true;
+ return;
+ } else {
+ errmsg = messages.getString("serverFault") + "\n";
+ failed = true;
+ return;
+ }
+ }
+
+ if (wait == 9999) {
+ errmsg = messages.getString("serverBusy60s") + "\n";
+ failed = true;
+ return;
+ }
+
+ if (wait == 9990) { // signal from the server to see if the client is still alive
+ ctl.send_msg(MSG_WAITING, tests);
+ continue;
+ }
+
+ // Each test should take less than 30 seconds, so tell them 45 sec * number of
+ // tests in the queue.
+ wait = (wait * 45);
+ results.append(messages.getString("otherClient") + wait + messages.getString("seconds") +".\n");
+ swait = 1;
+ }
+
+ uiServices.onLoginSent();
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ failed = true;
+ return;
+ }
+ if (msg.type != MSG_LOGIN) {
+ errmsg = messages.getString("versionWrongMessage") + "\n";
+ failed = true;
+ return;
+ }
+
+ String vVersion = new String(msg.body);
+ if (!vVersion.startsWith("v")) {
+ errmsg = messages.getString("incompatibleVersion");
+ failed = true;
+ return;
+ }
+ System.out.println("Server version: " + vVersion.substring(1));
+
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ failed = true;
+ return;
+ }
+ if (msg.type != MSG_LOGIN) {
+ errmsg = messages.getString("testsuiteWrongMessage") + "\n";
+ failed = true;
+ return;
+ }
+ uiServices.incrementProgress();
+ StringTokenizer tokenizer = new StringTokenizer(new String(msg.body), " ");
+
+ while (tokenizer.hasMoreTokens()) {
+ if (uiServices.wantToStop()) {
+ ctl.send_msg(MSG_ERROR, "Manually stopped by the user".getBytes());
+ ctl.close();
+ ctlSocket.close();
+ errmsg = "\n" + messages.getString("stopped") + "\n";
+ failed = true;
+ return;
+ }
+ int testId = Integer.parseInt(tokenizer.nextToken());
+ switch (testId) {
+ case TEST_MID:
+ uiServices.updateStatusPanel(messages.getString("middlebox"));
+ if (test_mid(ctl)) {
+ results.append(errmsg);
+ results.append(messages.getString("middleboxFail2") + "\n");
+ tests &= (~TEST_MID);
+ }
+ uiServices.incrementProgress();
+ break;
+ case TEST_SFW:
+ uiServices.updateStatusPanel(messages.getString("simpleFirewall"));
+ if (test_sfw(ctl)) {
+ results.append(errmsg);
+ results.append(messages.getString("sfwFail") + "\n");
+ tests &= (~TEST_SFW);
+ }
+ uiServices.incrementProgress();
+ break;
+ case TEST_C2S:
+ uiServices.updateStatusPanel(messages.getString("c2sThroughput"));
+ if (test_c2s(ctl)) {
+ results.append(errmsg);
+ results.append(messages.getString("c2sThroughputFailed") + "\n");
+ tests &= (~TEST_C2S);
+ }
+ uiServices.incrementProgress();
+ break;
+ case TEST_S2C:
+ uiServices.updateStatusPanel(messages.getString("s2cThroughput"));
+ if (test_s2c(ctl, ctlSocket)) {
+ results.append(errmsg);
+ results.append(messages.getString("s2cThroughputFailed") + "\n");
+ tests &= (~TEST_S2C);
+ }
+ uiServices.incrementProgress();
+ break;
+ default:
+ errmsg = messages.getString("unknownID") + "\n";
+ failed = true;
+ return;
+ }
+ }
+ if (uiServices.wantToStop()) {
+ ctl.send_msg(MSG_ERROR, "Manually stopped by the user".getBytes());
+ ctl.close();
+ ctlSocket.close();
+ errmsg = messages.getString("stopped") + "\n";
+ failed = true;
+ return;
+ }
+
+ uiServices.updateStatusPanel(messages.getString("receiving"));
+ i = 0;
+
+ try {
+ for (;;) {
+ if (ctl.recv_msg(msg) != 0) {
+ errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
+ failed = true;
+ return;
+ }
+ if (msg.type == MSG_LOGOUT) {
+ break;
+ }
+ if (msg.type != MSG_RESULTS) {
+ errmsg = messages.getString("resultsWrongMessage") + "\n";
+ failed = true;
+ return;
+ }
+ tmpstr += new String(msg.body);
+ i++;
+ }
+ } catch (IOException e) {}
+
+ if (i == 0) {
+ results.append(messages.getString("resultsTimeout") + "\n");
+ }
+ uiServices.logError("Calling InetAddress.getLocalHost() twice");
***The diff for this file has been truncated for email.***
=======================================
--- /dev/null
+++ /branches/android/java/net/measurementlab/ndt/UiServices.java Wed Jun 9 15:23:05 2010
@@ -0,0 +1,128 @@
+// Copyright 2009 Google Inc. All Rights Reserved.
+
+package net.measurementlab.ndt;
+
+/**
+ * Provides platform-specific UI services. Defines several functions for
+ * platform-specific classes to implement, to help the working thread dispatch
+ * messages to the UI.
+ *
+ * <p>
+ * Flow of the Interface:
+ * <ol>
+ * <li>Calls onBeginTest() on test begins.
+ * <li>Calls appendString() whenever new output exists, could be sent to
+ * different views.
+ * <li>Calls increaseProgress() when a work step has been finished.
+ * <li>Calls onFailure() when test failed, to leave an interface for some
+ * platform-specific debug methods or just output some failure messages.
+ * <li>Calls submitData() to pass the result variable into the main activity for
+ * later reference (in email app, etc.).
+ * <li>Calls onEndTest() to finish the test.
+ * </ol>
+ */
+public interface UiServices {
+ /**
+ * Id refers to the main view for sending the output string.
+ *
+ * @see #appendString
+ */
+ public static final int MAIN_VIEW = 0;
+
+ /**
+ * Id refers to the statistics view for sending the output string.
+ *
+ * @see #appendString
+ */
+ public static final int STAT_VIEW = 1;
+
+ /**
+ * Id refers to the diagnose view for sending the output string.
+ *
+ * @see #appendString
+ */
+ public static final int DIAG_VIEW = 2;
+
+ /**
+ * Id refers to the debug view for sending the output string.
+ *
+ * @see #appendString
+ */
+ public static final int DEBUG_VIEW = 3;
+
+ /**
+ * Maximum test steps for ProgressBar setting.
+ */
+ public static final int TEST_STEPS = 7;
+
+ /**
+ * Sends message to the designated view.
+ *
+ * @param str the string which is sent to the statistics view
+ * @param viewId id that indicates where the string should be sent to, could
+ * be
{@link
#MAIN_VIEW} or
{@link
#STAT_VIEW}
+ */
+ public void appendString(String str, int viewId);
+
+ /**
+ * Called each time a test step completes. Should be called a maximum of
+ * TEST_STEPS times during the whole test.
+ */
+ public void incrementProgress();
+
+ /**
+ * Notifies the callee that the test is starting.
+ */
+ public void onBeginTest();
+
+ /**
+ * Notifies the callee that the test has ended.
+ */
+ public void onEndTest();
+
+ /**
+ * Called when the test ends abnormally. Should be called before onEndTest();
+ */
+ public void onFailure(String errorMessage);
+
+ /**
+ * Called when packet queuing is detected.
+ */
+ // TODO: clean up this hack that preserves existing applet functionality
+ public void onPacketQueuingDetected();
+
+ /**
+ * Called when the test 'login' packet has been successfully sent.
+ */
+ // TODO: clean up this hack that preserves existing applet functionality
+ public void onLoginSent();
+
+ /**
+ * Abstract to make the logging action generic in different platforms.
+ *
+ * @param str message which is sent to the log.
+ */
+ public void logError(String str);
+
+ /**
+ * Updates the status message, which indicates what test is running.
+ */
+ public void updateStatus(String status);
+
+ /**
+ * Updates the status panel. (Applet-specific)
+ */
+ // TODO: remove this Applet-specific functionality (just use one status)
+ public void updateStatusPanel(String status);
+
+ /**
+ * Returns true if the test should be aborted, false if it should continue.
+ */
+ // TODO: remove this polling, change to a listener or something cleaner
+ public boolean wantToStop();
+
+ // Hack for the Applet's JavaScript access API extension
+ public void setVariable(String name, int value);
+ public void setVariable(String name, double value);
+ public void setVariable(String name, Object value);
+}
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_ca_ES.properties Mon Apr 12 16:00:51 2010
+++ /dev/null
@@ -1,220 +0,0 @@
-10gbps = subxarxa 10 Gbps 10 Gigabit Ethernet/OC-192
-10mbps = subxarxa 10 Mbps Ethernet
-10mins = 10 min
-12hours = 12 hores
-1day = 1 dia
-1gbps = subxarxa 1.0 Gbps Gigabit Ethernet
-1min = 1 min
-2.4gbps = subxarxa 2.4 Gbps OC-48
-2hours = 2 hores
-30mins = 30 min
-45mbps = subxarxa 45 Mbps T3/DS3
-5mins = 5 min
-622mbps = subxarxa a 622 Mbps OC-12
-and = and
-architecture = Arquitectura
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Cua de paquets detectada
-c2sThroughput = C2S throughput
-c2sThroughputFailed = Test de C2S throughput FALLIT!
-cabledsl = Cable/DSL modem
-cablesNok = Advert\u00e8ncia: Excessius errors de xarxa, revisar cable(s) de xarxa
-cablesOk = Trobat bon(s) cable(s) de xarxa
-checkingFirewalls = Buscant Firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Buscant Caixes Intermitjes (Middleboxes) . . . . . . . . . . . . . . . . . .
-clickStart = Fes click a COMEN\u00e7AR per a comen\u00e7ar la prova
-clickStart2 = Fes click a COMEN\u00e7AR per a tornar a fer la prova
-client = Client
-client2 = Client
-clientAcksReport = Client Confirma l'enlla\u00e7 reportat \u00e9s
-clientDataReports = Dades de Client reporten que l'enlla\u00e7 \u00e9s
-clientInfo = Detalls del sistema client
-clientIpModified = Informaci\u00f3: El NAT (Network Address Translation) est\u00e0 modificant l'adre\u00e7a IP del client
-clientIpNotFound = No es troba l'adre\u00e7a del client. Per a usuaris d'Internet Explorer, modifiqui els par\u00e0metres de Java\n Click a Eines - Opcions d'Internet - Seguretat - Nivell personalitzat, trobi la l\u00ednia\n Microsoft VM - Java Permissions i faci click a personalitzar\ Editar permisos - Acc\u00e9s a totes les Adreces de xarxa, click a Habilitar i desar els canvis.
-clientIpPreserved = Les Adreces IP de servidor son conservades Extrem-a-Extrem
-clientSays = per\u00f2 el Client diu
-close = Tancar
-comments = Comentaris
-congestNo = No s'ha trobat congesti\u00f3 de xarxa
-congestYes = Informaci\u00f3: El throughput \u00e9s limitat per altre tr\u00e0fic de xarxa
-connIdle = La connexi\u00f3 estaba aturada
-connStalled = La connexi\u00f3 s'ha pausat
-connected = Connectat a:
-connectedTo = s'ha connectat a:
-copy = C\u00f2pia
-defaultTests = Proves per defecte
-delayBetweenTests = Retard entre proves
-detailedStats = Estad\u00edstiques detallades
-dialup = Modem telef\u00f2nic
-dialup2 = Trucada
-done = Fet.
-done2 = Tcpbw100 fet
-dupAcksIn = es reben ack's duplicats
-duplexFullHalf = Alarma: Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
-duplexHalfFull = Alarma: Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-duplexNok = Advert\u00e8ncia: Condici\u00f3 doble antiga no concordant antiga
-duplexOk = Operaci\u00f3 normal trobada (Normal duplex operation found.)
-endOfEmail = Final del missatge de Correu electr\u00f2nic
-excLoss = Exc\u00e9s de p\u00e8rdua de paquets est\u00e0 impactant al rendiment, prova la funci\u00f3 d'autonegociaci\u00f3 entre el teu PC i el switch de xarxa
-excessiveErrors = Alarma: Excessius errors, revisa el(s) cable(s) de xarxa.
-firewallNo = no est\u00e0 darrere un firewall. [Conexi\u00f3 al port ef\u00edmer correcte]
-firewallYes = est\u00e0 probablement darrere un firewall. [Conexi\u00f3 al port ef\u00edmer ha fallat]
-flowControlLimits = El control de fluxe basat en xarxa limita el throughput a
-found100mbps = Trobat enlla\u00e7 de 100 Mbps FastEthernet.
-found10gbps = Trobat enlla\u00e7 de 10 Gbps 10 GigEthernet/OC-192.
-found10mbps = Trobat enlla\u00e7 de 10 Mbps Ethernet.
-found1gbps = Trobat enlla\u00e7 de 1 Gbps GigabitEthernet.
-found2.4gbps = Trobat enlla\u00e7 de 2.4 Gbps OC-48.
-found45mbps = Trobat enlla\u00e7 de 45 Mbps T3/DS3.
-found622mbps = Trobat enlla\u00e7 de 622 Mbps OC-12.
-foundDialup = Trobat enlla\u00e7 de Dial-up modem.
-foundDsl = Trobat enlla\u00e7 de Cable modem/DSL/T1.
-fullDuplex = subxaxarxa Full duplex Fast Ethernet
-general = General
-generatingReport = Generant informe de problemes: Aquest informe s'enviar\u00e0 per e-mail a la persona que especifiquis
-getWeb100Var = Obt\u00e9 les variables WEB100
-halfDuplex = subxarxa Half duplex Fast Ethernet
-id = Eina de diagn\u00f2stic de xara TCP/Web100
-immediate = immediat
-inboundTest = Test d'entrada Tcpbw100...
-inboundWrongMessage = Test de throughput C2S: Rebut un tipus de missatge erroni
-incompatibleVersion = N\u00famero de versi\u00f3 incompatible
-incrRxBuf = Augmentant el valor del buffer de recepci\u00f3 del client
-incrTxBuf = Augmentant el buffer de sortida del servidor NDT
-information = Informaci\u00f3
-initialization = Inicialitzant...
-insufficient = No es disposa de prou dades per a determinar el tipus d'enlla\u00e7.
-invokingMailtoFunction = Invocant funci\u00f3 Mailto Tcpbw100
-ipProtocol = Protocol IP
-ipcFail = Fallen les comunicacions entre processos, tipus d'enlla\u00e7 desconegut.
-usingIpv4 = -- Utilitzant adre\u00e7a IPv4
-usingIpv6 = -- Utilitzant adre\u00e7a IPv6
-javaData = Dades Java
-kbyteBufferLimits = KByte buffer que limita el throughput a
-limitNet = Xarxa limitada
-limitRx = Receptor limitat
-limitTx = Emissor limitat
-linkFullDpx = Enlla\u00e7 establert al mode Full Duplex
-linkHalfDpx = Enlla\u00e7 establert al mode Half Duplex
-loggingWrongMessage = Logant al servidor: Es rep un tipus de missatge erroni.
-lookupError = Incapa\u00e7 d'obtenir la adre\u00e7a IP remota
-mboxWrongMessage = Test intermig: Rebut tipus de missatge erroni
-middlebox = Middlebox
-middleboxFail = El servidor ha fallat mentre es provaba la middlebox
-middleboxFail2 = test Middlebox FALLA!
-middleboxModifyingMss = Informaci\u00f3: La middlebox de xarxa est\u00e0 modificant la variable MSS
-middleboxTest = Test de Middlebox Tcpbw100...
-moreDetails = M\u00e9s detalls...
-name = Nom
-ndtServerHas = El servidor NDT t\u00e9 un
-noPktLoss1 = No hi ha p\u00e8rdua de paquets
-noPktLoss2 = No s'aprecia cap p\u00e8rdua de paquets
-numberOfTests = Nombre de proves
-of = de
-off = OFF
-ok = OK
-oldDuplexMismatch = "Advert\u00e8ncia: Es detecta antiga condici\u00f3 doble no concordant"
-on = ON
-ooOrder = per\u00f2 els paquets han arribat desordenats
-options = Opcions
-osData = dades del SO:
-otherClient = S'est\u00e0 servint un altre client, la seva prova comen\u00e7ar\u00e0 en
-otherTraffic = Informaci\u00f3: L'enlla\u00e7 de xarxa est\u00e0 congestionat per algun altre tr\u00e0fic
-outboundTest = Test de sortida Tcpbw100...
-outboundWrongMessage = Test de throughput C2S: Es rep un tipus de missatge erroni
-packetQueuing = Posant paquets en cua
-packetQueuingInfo = TCP (Transmission Control Protocol) transfereix dades entre dos\n equips d'internet. Autom\u00e0ticament detecta i es recupera d'errors i p\u00e8rdues./n TCP utilitza buffers per a proporcionar aquesta confiabilitat. Adem\u00e9s,\n els switch i routers
-utilitzen buffers per aquells casos en que m\u00faltiples enlla\u00e7os d'entrada\n envien paquets a un \u00fanic enlla\u00e7 de sortida o si varien les velocitats de cada enlla\u00e7\n (FastEthernet a modem DSL).\n\n El servidor NDT genera i envia 10 segons de dades al client. En\n alguns casos el servidor pot generar les dades m\u00e9s de pressa del que pot enviar els paquets a la xarxa\n (p.ex., una CPU a 2 GHz enviant a un client conectat a una DSL).\n Quan passa aix\u00f2, alguns paquets es poden quedar a la cua de sortida /n quan s'acaba el temporitzador de 10 segons.\n El TCP continuar\u00e0 enviant automaticament aquests missatges a la cua i el client continuar\u00e0 acceptant-los i processant-los.\n Aix\u00f2 provoca que una prova duri m\u00e9s del que s'espera.\n\n Aquesta condici\u00f3 s'ha produït durant aquesta prova. /n No es requereix cap acci\u00f3 per a resoldre aquesta situaci\u00f3.
-packetSizePreserved = La mida del paquet \u00e9s prefixada Extrem-a-Extrem
-packetsize = la mida de paquet
-pc = PC
-pctOfTime = % del temps
-performedTests = Proves realitzades
-pktsRetrans = Paquets retransmesos
-possibleDuplexFullHalf = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=Full i Host=half
-possibleDuplexHalfFull = Alarma: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-possibleDuplexHalfFullWarning = Advert\u00e8ncia: Possible Condici\u00f3 doble no concordant detectada Switch=half i Host=full
-preferIPv6 = prefereix IPv6
-printDetailedStats = Imprimir Estad\u00edstiques detallades
-protocolError = Error de Protocol! S'esperava 'prepare', s'obt\u00e9: 0x
-qSeen = Test de throughput: Detectat encuament de paquets
-ready = Tcpbw100 llest
-receiveBufferShouldBe = Informaci\u00f3: El buffer de recepci\u00f3 hauria de ser
-receiving = Rebent resultats...
-reportProblem = Informar el problema
-resultsParseError = Error en transformar els resultats del test!
-resultsTimeout = Alerta! Time-out al client mentre es llegien dades, (possible duplex mismatch exists)
-resultsWrongMessage = Resultats del test: S'ha rebut un tipus de missatge incorrecte
-rtt = RTT
-rttFail = L'algorisme del link de detecci\u00f3 ha fallat degut a excessius temps d'anada i tornada (Round trip times).
-runningInboundTest = executant test d'entrada de 10s (server-a-client [S2C]) . . . . . .
-runningOutboundTest = executant test de sortida de 10s (client-a-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Encuament de paquets detectat
-s2cThroughput = Throughput S2C
-s2cThroughputFailed = El test de throughput S2C ha FALLAT!
-sackReceived = Blocs SACK rebuts
-scalingFactors = Factors d'Escala
-seconds = segons
-server = Servidor
-serverAcksReport = El servidor confirma que l'enlla\u00e7 reportat \u00e9s
-serverFault = Fallida de Servidor: Error desconegut. Torneu-ho a provar m\u00e9s tard, si us plau.
-serverBusy = Servidor Ocupat: Massa clients esperant a la cua del servidor. Torneu-ho a provar m\u00e9s tard, si us plau.
-serverBusy15s = Servidor Ocupat: Esperi 15 segons per a la finalitzaci\u00f3 del test anterior.
-serverBusy30s = Servidor Ocupat: Esperi 30 segons per a la finalitzaci\u00f3 del test anterior.
-serverBusy60s = Servidor Ocupat: Esperi 60 segons per a la finalitzaci\u00f3 del test anterior.
-serverDataReports = Les dades del servidor indiquen que l'enlla\u00e7 \u00e9s
-serverFail = El servidor ha fallat mentre es rebien dades
-serverIpModified = Informaci\u00f3: El Network Address Translation (NAT) est\u00e0 modificant l'adre\u00e7a IP del client
-serverIpPreserved = L'adre\u00e7a IP del servidor es mant\u00e9 Extrem-a-Extrem
-serverNotRunning = Proc\u00e9s del servidor no funcionant: Arrenqui el proc\u00e9s web100srv al servidor remot.
-serverSays = El servidor diu
-sfwFail = Test de firewall simple FALLA!
-sfwSocketFail = Simple firewall test: Cannot create listen socket
-sfwTest = Simple firewall test...
-sfwWrongMessage = Test de firewall simple: S'ha rebut un missatge erroni.
-showOptions = Mostra les opcions
-simpleFirewall = Firewall simple
-sleep10m = Dormint per 10 mins...
-sleep1m = Dormint per 1 min...
-sleep30m = Dormint per 30 mins...
-sleep5m = Dormint per 5 mins...
-sleep12h = Dormint per 12 hores...
-sleep1d = Dormint per 1 d\u00eda...
-sleep2h = Dormint per 2 hores...
-start = COMEN\u00e7A
-startingTest = Comen\u00e7ant test
-statistics = Estad\u00edstiques
-stop = ATURA
-stopped = Les proves han estat aturades!
-stopping = Aturant...
-systemFault = Fallada de sistema
-test = Prova
-testsuiteWrongMessage = Negociant s\u00e8rie de proves: S'ha rebut un missatge erroni.
-theSlowestLink = El link m\u00e9s lent al cam\u00ed extrem a extrem \u00e9s un
-theoreticalLimit = El l\u00edmit te\u00f2ric de xarxa \u00e9s
-thisConnIs = Aquesta connexi\u00f3 \u00e9s
-timesPktLoss = temps degut a p\u00e8rdua de paquets
-toMaximizeThroughput = kbytes per a maximitzar el cabdal (throughput)
-troubleReportFrom = Informe de problemes de NDT a
-unableToDetectBottleneck = El servidor no pot determinar el tipus d'enlla\u00e7 que provoca el coll d'ampolla.
-unableToObtainIP = No es possible determinar la adre\u00e7a IP local
-unknownID = ID de test desconegut
-unknownServer = Servidor desconegut
-unsupportedClient = Informaci\u00f3: El servidor no suporta aquest client de l\u00ednia de comandes
-vendor = Fabricant
-version = Versi\u00f3
-versionWrongMessage = Negociant la versi\u00f3 de NDT: S'ha rebut un missatge erroni.
-web100Details = An\u00e0lisi detallat Web100
-web100KernelVar = Variables de Kernel WEB100
-web100Stats = Estad\u00edstiques WEB100 habilitades
-web100Var = Variables Web100
-web100rtt = Web100 informa el temps d'anada i tornada (RTT)
-web100tcpOpts = Web100 informa que TCP ha negociat els par\u00e0metres de funcionament \u00f2ptims a:
-willImprove = Millorar\u00e0 el funcionament
-workstation = Estaci\u00f3 de treball
-your = El seu
-yourPcHas = El seu PC/Equip de treball t\u00e9 un
-connectingTo = Connectant a
-toRunTest = executar prova
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_en_US.properties Fri Apr 9 09:49:47 2010
+++ /dev/null
@@ -1,219 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
-10mbps = 10 Mbps Ethernet subnet
-10mins = 10 mins
-12hours = 12 hours
-1day = 1 day
-1gbps = 1.0 Gbps Gigabit Ethernet subnet
-1min = 1 min
-2.4gbps = 2.4 Gbps OC-48 subnet
-2hours = 2 hours
-30mins = 30 mins
-45mbps = 45 Mbps T3/DS3 subnet
-5mins = 5 mins
-622mbps = a 622 Mbps OC-12 subnet
-and = and
-architecture = Architecture
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Packet queueing detected
-c2sThroughput = C2S throughput
-c2sThroughputFailed = C2S throughput test FAILED!
-cabledsl = Cable/DSL modem
-cablesNok = Warning: excessive network errors, check network cable(s)
-cablesOk = Good network cable(s) found
-checkingFirewalls = Checking for firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Checking for Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Click START to start the test
-clickStart2 = Click START to re-test
-client = Client
-client2 = Client
-clientAcksReport = Client Acks report link is
-clientDataReports = Client Data reports link is
-clientInfo = Client System Details
-clientIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
-clientIpNotFound = Client IP address not found. For IE users, modify the Java parameters\n click Tools - Internet Options - Security - Custom Level, scroll down to\n Microsoft VM - Java permissions and click Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, click Eanble and save changes
-clientIpPreserved = Server IP addresses are preserved End-to-End
-clientSays = but Client says
-close = Close
-comments = Comments
-congestNo = No network congestion discovered.
-congestYes = Information: throughput is limited by other network traffic.
-connIdle = The connection was idle
-connStalled = The connection stalled
-connected = Connected to:
-connectedTo = is connected to a
-copy = Copy
-defaultTests = Default tests
-delayBetweenTests = Delay between tests
-detailedStats = Detailed Statistics
-dialup = Dial-up Modem
-dialup2 = Dial-up
-done = Done.
-done2 = Tcpbw100 done
-dupAcksIn = duplicate acks received
-duplexFullHalf = Alarm: Duplex Mismatch condition detected Switch=Full and Host=half
-duplexHalfFull = Alarm: Duplex Mismatch condition detected Switch=half and Host=full
-duplexNok = Warning: Old Duplex mismatch condition detected:
-duplexOk = Normal duplex operation found.
-endOfEmail = End Of Email Message
-excLoss = Excessive packet loss is impacting your performance, check the auto-negotiate function on your local PC and network switch
-excessiveErrors = Alarm: Excessive errors, check network cable(s).
-firewallNo = is not behind a firewall. [Connection to the ephemeral port was successful]
-firewallYes = is probably behind a firewall. [Connection to the ephemeral port failed]
-flowControlLimits = The network based flow control limits the throughput to
-found100mbps = 100 Mbps FastEthernet link found.
-found10gbps = 10 Gbps 10 GigEthernet/OC-192 link found.
-found10mbps = 10 Mbps Ethernet link found.
-found1gbps = 1 Gbps GigabitEthernet link found.
-found2.4gbps = 2.4 Gbps OC-48 link found.
-found45mbps = 45 Mbps T3/DS3 link found.
-found622mbps = 622 Mbps OC-12 link found.
-foundDialup = Dial-up modem link found.
-foundDsl = Cable modem/DSL/T1 link found.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = General
-generatingReport = Generating Trouble Report: This report will be emailed to the person you specify
-getWeb100Var = Get WEB100 Variables
-halfDuplex = Half duplex Fast Ethernet subnet
-id = TCP/Web100 Network Diagnostic Tool
-immediate = immediate
-inboundTest = Tcpbw100 inbound test...
-inboundWrongMessage = C2S throughput test: Received wrong type of the message
-incompatibleVersion = Incompatible version number
-incrRxBuf = Increasing the the client's receive buffer
-incrTxBuf = Increasing the NDT server's send buffer
-information = Information
-initialization = Initialization...
-insufficient = Insufficent data collected to determine link type.
-invokingMailtoFunction = Tcpbw100 Invoking Mailto function
-ipProtocol = IP protocol
-ipcFail = Interprocess communications failed, unknown link type.
-usingIpv4 = -- Using IPv4 address
-usingIpv6 = -- Using IPv6 address
-javaData = Java data
-kbyteBufferLimits = KByte buffer which limits the throughput to
-limitNet = network limited
-limitRx = receiver limited
-limitTx = sender limited
-linkFullDpx = Link set to Full Duplex mode
-linkHalfDpx = Link set to Half Duplex mode
-loggingWrongMessage = Logging to server: Received wrong type of the message
-lookupError = Unable to obtain remote IP address
-mboxWrongMessage = Middlebox test: Received wrong type of the message
-middlebox = Middlebox
-middleboxFail = Server Failed while middlebox testing
-middleboxFail2 = Middlebox test FAILED!
-middleboxModifyingMss = Information: Network Middlebox is modifying MSS variable
-middleboxTest = Tcpbw100 Middlebox test...
-moreDetails = More Details...
-name = Name
-ndtServerHas = The NDT server has a
-noPktLoss1 = No packet loss
-noPktLoss2 = No packet loss was observed
-numberOfTests = Number of tests
-of = of
-off = OFF
-ok = OK
-oldDuplexMismatch = "Warning: Old Duplex mismatch condition detected: "
-on = ON
-ooOrder = but packets arrived out-of-order
-options = Options
-osData = OS data:
-otherClient = Another client is currently being served, your test will begin within
-otherTraffic = Information: Other network traffic is congesting the link
-outboundTest = Tcpbw100 outbound test...
-outboundWrongMessage = C2S throughput test: Received wrong type of the message
-packetQueuing = Packet queuing
-packetQueuingInfo = TCP (Transmission Control Protocol) reliably transfers data between two\n Internet hosts. It automatically detects and recovers from errors and\n losses. TCP uses buffers to provide this reliability. In addition,\n switches and routers use buffers to handle cases where multiple input\n links send packets to a single output link or link speeds change\n (FastEthernet to DSL modem).\n\n The NDT server generates and sends 10 seconds of data to the client. In\n some cases the server can generate data faster than it can send packets\n into the network (e.g., a 2 GHz CPU sending to a DSL connected client).\n When this happens, some packets may remain in the server output queue\n when the 10 second timer expires. TCP will automatically continue to\n send these queued packets and the client will continue to accept and\n process these incoming packets. This will result in the client test\n running longer than expected.\n\n This condition has occurred during this test. No action is required to\n resolve this issue.
-packetSizePreserved = Packet size is preserved End-to-End
-packetsize = the Packet size
-pc = PC
-pctOfTime = % of the time
-performedTests = Performed tests
-pktsRetrans = packets retransmitted
-possibleDuplexFullHalf = Alarm: Possible Duplex Mismatch condition detected Switch=Full and Host=half
-possibleDuplexHalfFull = Alarm: Possible Duplex Mismatch condition detected Switch=half and Host=full
-possibleDuplexHalfFullWarning = Warning: Possible Duplex Mismatch condition detected Switch=half and Host=full
-preferIPv6 = prefer IPv6
-printDetailedStats = Print Detailed Statistics
-protocolError = Protocol error! Expected 'prepare', got: 0x
-qSeen = throughput test: Packet queuing detected
-ready = Tcpbw100 ready
-receiveBufferShouldBe = Information: The receive buffer should be
-receiving = Receiving results...
-reportProblem = Report problem
-resultsParseError = Error parsing test results!
-resultsTimeout = Warning! Client time-out while reading data, possible duplex mismatch exists
-resultsWrongMessage = Tests results: Received wrong type of the message
-rtt = RTT
-rttFail = Link detection algorithm failed due to excessive Round Trip Times.
-runningInboundTest = running 10s inbound test (server-to-client [S2C]) . . . . . .
-runningOutboundTest = running 10s outbound test (client-to-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Packet queueing detected
-s2cThroughput = S2C throughput
-s2cThroughputFailed = S2C throughput test FAILED!
-sackReceived = SACK blocks received
-scalingFactors = Scaling Factors
-seconds = seconds
-server = Server
-serverAcksReport = Server Acks report link is
-serverFault = Server Fault: unknown fault occurred. Please try again later
-serverBusy = Server Busy: Too many clients waiting in server queue. Please try again later
-serverBusy15s = Server Busy: Please wait 15 seconds for previous test to finish
-serverBusy30s = Server busy: Please wait 30 seconds for previous test to finish
-serverBusy60s = Server Busy: Please wait 60 seconds for previous test to finish
-serverDataReports = Server Data reports link is
-serverFail = Server failed while receiving data
-serverIpModified = Information: Network Address Translation (NAT) box is modifying the Client's IP address
-serverIpPreserved = Server IP addresses are preserved End-to-End
-serverNotRunning = Server process not running: start web100srv process on remote server
-serverSays = Server says
-sfwFail = Simple firewall test FAILED!
-sfwSocketFail = Simple firewall test: Cannot create listen socket
-sfwTest = Simple firewall test...
-sfwWrongMessage = Simple firewall test: Received wrong type of the message
-showOptions = Show options
-simpleFirewall = Simple firewall
-sleep10m = Sleeping for 10 mins...
-sleep1m = Sleeping for 1 min...
-sleep30m = Sleeping for 30 mins...
-sleep5m = Sleeping for 5 mins...
-sleep12h = Sleeping for 12 hours...
-sleep1d = Sleeping for 1 day...
-sleep2h = Sleeping for 2 hours...
-start = START
-startingTest = Starting test
-statistics = Statistics
-stop = STOP
-stopped = The tests were stopped!
-stopping = Stopping...
-systemFault = System Fault
-test = Test
-testsuiteWrongMessage = Negotiating test suite: Received wrong type of the message
-theSlowestLink = The slowest link in the end-to-end path is a
-theoreticalLimit = The theoretical network limit is
-thisConnIs = This connection is
-timesPktLoss = times due to packet loss
-toMaximizeThroughput = kbytes to maximize throughput
-troubleReportFrom = Trouble Report from NDT on
-unableToDetectBottleneck = Server unable to determine bottleneck link type.
-unableToObtainIP = Unable to obtain local IP address
-unknownID = Unknown test ID
-unknownServer = Unknown server
-unsupportedClient = Information: The server does not support this command line client
-vendor = Vendor
-version = Version
-versionWrongMessage = Negotiating NDT version: Received wrong type of the message
-web100Details = Web100 Detailed Analysis
-web100KernelVar = WEB100 Kernel Variables
-web100Stats = WEB100 Enabled Statistics
-web100Var = Web100 Variables
-web100rtt = Web100 reports the Round trip time
-web100tcpOpts = Web100 reports TCP negotiated the optional Performance Settings to:
-willImprove = will improve performance
-workstation = Workstation
-your = Your
-yourPcHas = Your PC/Workstation has a
-connectingTo = Connecting to
-toRunTest = to run test
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_fr_FR.properties Tue Apr 13 19:14:36 2010
+++ /dev/null
@@ -1,219 +0,0 @@
-10gbps = sous-r\u00E9seau 10 Gbps 10 Gigabit Ethernet/OC-192
-10mbps = sous-r\u00E9seau 10 Mbps Ethernet
-10mins = 10 minutes
-12hours = 12 heures
-1day = 1 jour
-1gbps = sous-r\u00E9seau 1.0 Gbps Gigabit Ethernet
-1min = 1 minute
-2.4gbps = sous-r\u00E9seau 2.4 Gbps OC-48
-2hours = 2 heures
-30mins = 30 minutes
-45mbps = sous-r\u00E9seau 45 Mbps T3/DS3
-5mins = 5 minutes
-622mbps = sous-r\u00E9seau 622 Mbps OC-12
-and = et
-architecture = Architecture
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: D\u00E9tection de mise en file d'attente de paquets
-c2sThroughput = d\u00E9bit C2S
-c2sThroughputFailed = test de d\u00E9bit C2S \u00C9CHOU\u00C9!
-cabledsl = modem C\u00E2ble/DSL
-cablesNok = Attention: trop d'erreurs r\u00E9seau, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau
-cablesOk = Bon(s) c\u00E2ble(s) r\u00E9seau trouv\u00E9s
-checkingFirewalls = V\u00E9rification de pr\u00E9sence de Firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = V\u00E9rification de pr\u00E9sence de Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Cliquez sur D\u00C9MARRER pour commencer le test
-clickStart2 = Cliquez sur D\u00C9MARRER pour re-tester
-client = Client
-client2 = Client
-clientAcksReport = Le lien des Acks clients est
-clientDataReports = Le lien des rapports de donn\u00E9es client est
-clientInfo = D\u00E9tails du syst\u00E8me client
-clientIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
-clientIpNotFound = L'adresse IP du client non trouv\u00E9e. Pour les utilisateurs IE, modifiez les param\u00E8tres Java \n Cliquez sur Outils - Options Internet - S\u00E9curit\u00E9 - Niveau personnalis\u00E9, descendez jusqu'\u00E0\n Microsoft VM - permissions Java et cliquez sur Personnalis\u00E9, cliquez sur Param\u00E8tres Java personnalis\u00E9s\n \u00C9diter les permissions - Acc\u00E8s \u00E0 toutes les adresses r\u00E9seau, cliquez sur Appliquer et sauvegardez
-clientIpPreserved = Les adresses IP serveur sont pr\u00E9serv\u00E9es de bout en bout
-clientSays = mais le Client dit
-close = Fermez
-comments = Commentaires
-congestNo = Aucune congestion r\u00E9seau d\u00E9tect\u00E9e.
-congestYes = Information: le d\u00E9bit est limit\u00E9 par d'autres flux r\u00E9seau.
-connIdle = La connexion a \u00E9t\u00E9 oisive
-connStalled = La connexion a \u00E9t\u00E9 suspendue
-connected = Connect\u00E9 \u00E0:
-connectedTo = est connect\u00E9 \u00E0 un
-copy = Copiez
-defaultTests = Tests par d\u00E9faut
-delayBetweenTests = D\u00E9lai entre les tests
-detailedStats = Statistiques d\u00E9taill\u00E9es
-dialup = Dial-up Modem
-dialup2 = Dial-up
-done = R\u00E9alis\u00E9.
-done2 = Tcpbw100 r\u00E9alis\u00E9
-dupAcksIn = r\u00E9ception de acks en doublon
-duplexFullHalf = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
-duplexHalfFull = Alerte: condition de duplex mismatch d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-duplexNok = Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e:
-duplexOk = Op\u00E9ration normale du duplex d\u00E9tect\u00E9e.
-endOfEmail = Fin de message e-mail
-excLoss = Une perte de paquets excessive diminue vos performances, v\u00E9rifiez les r\u00E9glages auto-negotiate de votre PC et du commutateur r\u00E9seau.
-excessiveErrors = Alerte: Trop d'erreurs, v\u00E9rifiez le(s) c\u00E2ble(s) r\u00E9seau.
-firewallNo = n'est pas derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re r\u00E9ussie]
-firewallYes = est probablement derri\u00E8re un firewall. [Connexion vers un port \u00E9ph\u00E9m\u00E8re \u00E9chou\u00E9e]
-flowControlLimits = Le contr\u00F4le de flux du r\u00E9seau limite le d\u00E9bit \u00E0
-found100mbps = Lien 100 Mbps FastEthernet d\u00E9tect\u00E9.
-found10gbps = Lien 10 Gbps 10 GigEthernet/OC-192 d\u00E9tect\u00E9.
-found10mbps = Lien 10 Mbps Ethernet d\u00E9tect\u00E9.
-found1gbps = Lien 1 Gbps GigabitEthernet d\u00E9tect\u00E9.
-found2.4gbps = Lien 2.4 Gbps OC-48 d\u00E9tect\u00E9.
-found45mbps = Lien 45 Mbps T3/DS3 d\u00E9tect\u00E9.
-found622mbps = Lien 622 Mbps OC-12 d\u00E9tect\u00E9.
-foundDialup = Lien modem Dial-up d\u00E9tect\u00E9.
-foundDsl = Lien C\u00E2ble modem/DSL/T1 d\u00E9tect\u00E9.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = G\u00E9n\u00E9ral
-generatingReport = G\u00E9n\u00E9ration du rapport d'incident: Ce rapport sera envoy\u00E9 \u00E0 la personne sp\u00E9cifi\u00E9e
-getWeb100Var = R\u00E9cup\u00E9rer les variables WEB100
-halfDuplex = Half duplex Fast Ethernet subnet
-id = Outil de diagnostics r\u00E9seau TCP/Web100
-immediate = imm\u00E9diat
-inboundTest = test d'entr\u00E9e Tcpbw100...
-inboundWrongMessage = Test de d\u00E9bit C2S : r\u00E9ception du mauvais type de message
-incompatibleVersion = Num\u00E9ro de version incompatible
-incrRxBuf = Agrandissement du tampon de r\u00E9ception client
-incrTxBuf = Agrandissement du tampon d'\u00E9mission du serveur NDT
-information = Information
-initialization = Initialisation...
-insufficient = Trop peu de donn\u00E9es collect\u00E9es pour d\u00E9terminer le type de lien.
-invokingMailtoFunction = Tcpbw100 Appel de la fonction Mailto
-ipProtocol = Protocole IP
-ipcFail = Communication inter-processus \u00E9chou\u00E9e, type de lien inconnu.
-usingIpv4 = -- Utilisation de l'adresse IPv4
-usingIpv6 = -- Utilisation de l'adresse IPv6
-javaData = Donn\u00E9es Java
-kbyteBufferLimits = KByte tampon, ce qui limite le d\u00E9bit \u00E0
-limitNet = limit\u00E9 par le r\u00E9seau
-limitRx = limit\u00E9 par le r\u00E9cepteur
-limitTx = limit\u00E9 par l'\u00E9metteur
-linkFullDpx = Lien r\u00E9gl\u00E9 en mode Full Duplex
-linkHalfDpx = Lien r\u00E9gl\u00E9 en mode Half Duplex
-loggingWrongMessage = Enregistrement aupr\u00E8s du serveur: r\u00E9ception du mauvais type de message
-lookupError = Impossible d'obtenir l'adresse IP distante
-mboxWrongMessage = Test de middlebox : r\u00E9ception du mauvais type de message
-middlebox = Middlebox
-middleboxFail = \u00C9chec du serveur lors du test de middlebox
-middleboxFail2 = Test de middlebox \u00C9CHOU\u00C9!
-middleboxModifyingMss = Information: le Middlebox modifie la variable MSS
-middleboxTest = Tcpbw100 test de Middlebox...
-moreDetails = Plus de d\u00E9tails...
-name = Nom
-ndtServerHas = Le serveur NDT a un
-noPktLoss1 = Pas de perte de paquets
-noPktLoss2 = Aucune perte de paquets n'a \u00E9t\u00E9 observ\u00E9e
-numberOfTests = Nombre de tests
-of = de
-off = OFF
-ok = OK
-oldDuplexMismatch = "Attention: condition de vieux duplex mismatch d\u00E9tect\u00E9e: "
-on = ON
-ooOrder = mais les paquets sont arriv\u00E9s dans le d\u00E9sordre
-options = Options
-osData = Donn\u00E9es de l'OS:
-otherClient = Un autre client est actuellement en train d'\u00EAtre servi, votre test commencera dans
-otherTraffic = Information: d'autres flux r\u00E9seaux congestionnent le lien
-outboundTest = Tcpbw100 test de sortie ...
-outboundWrongMessage = Test de d\u00E9bit C2S : R\u00E9ception du mauvais type de message
-packetQueuing = Mise en file d'attente de paquets
-packetQueuingInfo = TCP (Transmission Control Protocol) transf\u00E8re des donn\u00E9es de mani\u00E8re fiable entre deux\n h\u00F4tes Internet. Il d\u00E9tecte et r\u00E9cup\u00E8re automatiquement les erreurs et\n pertes. TCP utilise des tampons pour fournir cette fiabilit\u00E9. De plus,\n des commutateurs et routeurs utilisent des tampons pour g\u00E9rer les cas dans lesquels plusieurs liens\n d'entr\u00E9e envoient des paquets \u00E0 un seul lien de sortie ou lorsque la vitesse des liens est diff\u00E9rente\n (FastEthernet vers un modem DSL).\n\n Le serveur NDT g\u00E9n\u00E8re et envoie 10 secondes de donn\u00E9es au client. Dans\n certains cas le serveur peut produire des donn\u00E9es plus vite qu'il ne peut envoyer les paquets\n vers le r\u00E9seau (p.e., un CPU de 2 GHz \u00E9mettant vers un client connect\u00E9 en DSL).\n Quand cela arrive, certains paquets peuvent rester dans la file d'attente de sortie du serveur\n lorsque la minuterie de 10 secondes se termine. TCP continuera automatiquement \n d'envoyer ces paquets en file d'attente et le client continuera \u00E0 les accepter et\n \u00E0 g\u00E9rer ces paquets entrants. Ceci aura pour r\u00E9sultat que le test client\n dure plus longtemps que pr\u00E9vu.\n\n Cette condition s'est r\u00E9alis\u00E9e durant ce test. Aucune action n'est n\u00E9cessaire pour r\u00E9soudre ce probl\u00E8me.
-packetSizePreserved = La taille des paquets est pr\u00E9serv\u00E9e de bout-en-bout
-packetsize = La taille des paquets
-pc = PC
-pctOfTime = % du temps
-performedTests = Tests r\u00E9alis\u00E9s
-pktsRetrans = paquets retransmis
-possibleDuplexFullHalf = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=full et h\u00F4te=half
-possibleDuplexHalfFull = Alerte: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-possibleDuplexHalfFullWarning = Attention: condition de duplex mismatch possible d\u00E9tect\u00E9e, commutateur=half et h\u00F4te=full
-preferIPv6 = pr\u00E9f\u00E9rer IPv6
-printDetailedStats = Afficher les statistiques d\u00E9taill\u00E9es
-protocolError = Erreur de protocole! Attendait 'prepare', re\u00E7u: 0x
-qSeen = test de d\u00E9bit: Mise en file d'attente de paquets d\u00E9tect\u00E9e
-ready = Tcpbw100 pr\u00EAt
-receiveBufferShouldBe = Information: Le tampon de r\u00E9ception devrait \u00EAtre
-receiving = Reception des r\u00E9sultats...
-reportProblem = Rapporter un probl\u00E8me
-resultsParseError = Erreur lors du traitement des r\u00E9sultats!
-resultsTimeout = Attention! D\u00E9passement du d\u00E9lai client lors de la lecture des donn\u00E9es, il y a peut-\u00EAtre un probl\u00E8me de duplex mismatch
-resultsWrongMessage = R\u00E9sultat des tests: r\u00E9ception du mauvais type de message
-rtt = RTT
-rttFail = L'algorithme de d\u00E9tection du lien a \u00E9chou\u00E9 \u00E0 cause d'un temps d'aller-retour (RTT) trop important.
-runningInboundTest = ex\u00E9cution du test d'entr\u00E9e de 10 secondes (server-to-client [S2C]) . . . . . .
-runningOutboundTest = ex\u00E9cution du test de sortie de 10s (client-to-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: D\u00E9tection de mise en file d'attente de paquets
-s2cThroughput = d\u00E9bit S2C
-s2cThroughputFailed = Test de d\u00E9bit S2C \u00C9CHOU\u00C9!
-sackReceived = Blocs SACK re\u00E7us
-scalingFactors = Facteurs d'\u00E9chelle
-seconds = secondes
-server = Serveur
-serverAcksReport = les Acks du serveur rapportent que le lien est
-serverFault = Erreur du serveur: une erreur inconnue a eu lieu. Veuillez re-essayer plus tard.
-serverBusy = Serveur occup\u00E9: Trop de clients attendent dans la file d'attente du serveur. Veuillez re-essayer plus tard
-serverBusy15s = Serveur occup\u00E9: Veuillez attendre 15 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverBusy30s = Serveur occup\u00E9: Veuillez attendre 30 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverBusy60s = Serveur occup\u00E9: Veuillez attendre 60 secondes pour que le test pr\u00E9c\u00E9dant termine
-serverDataReports = Les donn\u00E9es du serveur rapportent que le lien est
-serverFail = Erreur du serveur lors de la r\u00E9ception des donn\u00E9es
-serverIpModified = Information: un \u00E9quipement Network Address Translation (NAT) modifie l'adresse IP du client
-serverIpPreserved = Les adresses IP du serveur sont conserv\u00E9es de bout en bout
-serverNotRunning = Processus serveur non actif: d\u00E9marrez le processus web100srv sur le serveur distant
-serverSays = Le serveur dit
-sfwFail = Le simple test firewall a \u00C9CHOU\u00C9!
-sfwSocketFail = Test simple du firewall: ne peut cr\u00E9er le socket d'\u00E9coute
-sfwTest = Test simple du firewall...
-sfwWrongMessage = Test simple du firewall : r\u00E9ception du mauvais type de message
-showOptions = Afficher les options
-simpleFirewall = Simple firewall
-sleep10m = En attente pour 10 minutes...
-sleep1m = En attente pour 1 minute...
-sleep30m = En attente pour 30 minutes...
-sleep5m = En attente pour 5 minutes...
-sleep12h = En attente pour 12 heures...
-sleep1d = En attente pour 1 jour...
-sleep2h = En attente pour 2 heures...
-start = D\u00C9MARRER
-startingTest = D\u00E9marrage du test
-statistics = Statistiques
-stop = ARRETER
-stopped = Les tests ont \u00E9t\u00E9 arr\u00EAt\u00E9s !
-stopping = Arr\u00EAt...
-systemFault = System Fault
-test = Test
-testsuiteWrongMessage = Negotiating test suite: r\u00E9ception du mauvais type de message
-theSlowestLink = Le lien le plus lent sur le chemin de bout en bout est un
-theoreticalLimit = La limite th\u00E9orique du r\u00E9seau est
-thisConnIs = Cette connexion est
-timesPktLoss = fois \u00E0 cause de la perte de paquets
-toMaximizeThroughput = kbytes pour maximiser le d\u00E9bit
-troubleReportFrom = Rapport d'incident de NDT sur
-unableToDetectBottleneck = Le serveur est incapable de d\u00E9terminer le type de lien du goulot d'\u00E9tranglement.
-unableToObtainIP = Impossible d'obtenir l'adresse IP locale
-unknownID = test ID inconnu
-unknownServer = Serveur inconnu
-unsupportedClient = Information: Le serveur n'accepte pas ce client en ligne de commande
-vendor = Vendeur
-version = Version
-versionWrongMessage = Negotiating NDT version: r\u00E9ception du mauvais type de message
-web100Details = Analyse d\u00E9taill\u00E9e Web100
-web100KernelVar = Variables du noyau WEB100
-web100Stats = Statistiques activ\u00E9es WEB100
-web100Var = Variables Web100
-web100rtt = Web100 rapporte le temps d'aller-retour (RTT)
-web100tcpOpts = Web100 rapporte que TCP a n\u00E9goci\u00E9 les param\u00E8tres de performances facultatifs \u00E0 :
-willImprove = am\u00E9liorera les performances
-workstation = Poste de travail
-your = Votre
-yourPcHas = Votre PC/Poste de travail a un
-connectingTo = Connexion \u00E0
-toRunTest = Pour d\u00E9marrer le test
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_nb_NO.properties Mon Apr 12 16:00:51 2010
+++ /dev/null
@@ -1,219 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192-subnett
-10mbps = 10 Mbps Ethernet-subnett
-10mins = 10 mins
-12hours = 12 hours
-1day = 1 d\u00f8ygn
-1gbps = 1.0 Gbps Gigabit Ethernet-subnett
-1min = 1 min
-2.4gbps = 2.4 Gbps OC-48-subnett
-2hours = 2 timer
-30mins = 30 min
-45mbps = 45 Mbps T3/DS3-subnett
-5mins = 5 min
-622mbps = et 622 Mbps OC-12-subnett
-and = og
-architecture = Arkitektur
-bytes = byte
-c2s = K-T
-c2sPacketQueuingDetected = [K-T]: Pakkek\u00f8ing oppdaget
-c2sThroughput = K-T ytelse
-c2sThroughputFailed = K-T ytelsestest FEILET!
-cabledsl = Kabel/DSL-modem
-cablesNok = Advarsel: for mange nettverksfeil, sjekk kablene.
-cablesOk = Nettverkskablene er i orden.
-checkingFirewalls = Ser etter brannmurer . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Ser etter mellombokser . . . . . . . . . . . . . . . . .
-clickStart = Trykk START for \u00e5 starte testene.
-clickStart2 = Trykk START for \u00e5 teste en gang til.
-client = Klient
-client2 = Klienten
-clientAcksReport = basert p\u00e5 ack fra klienten ansl\u00e5s linken til
-clientDataReports = Basert p\u00e5 data fra klienten ansl\u00e5s linken til
-clientInfo = Opplysninger om klientmaskinen
-clientIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
-clientIpNotFound = IP-addressen til klientmaskinen ble ikke funnet
-clientIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
-clientSays = men klienten sier
-close = Lukk
-comments = Kommentarer
-congestNo = Overbelastning i nettet ikke funnet.
-congestYes = Til orientering: ytelsen er begrenset av annen trafikk i nettet.
-connIdle = Forbindelsen ventet
-connStalled = Forbindelsen hang
-connected = Koblet til:
-connectedTo = er koblet til et
-connectingTo = Kobler opp mot
-copy = Kopier
-defaultTests = Standardtester
-delayBetweenTests = Delay between tests
-detailedStats = Detaljer
-dialup = Oppringt modem
-dialup2 = oppringt
-done = Ferdig
-done2 = Tcpbw100 ferdig
-dupAcksIn = dupliserte ack ble mottatt
-duplexFullHalf = Alarm: Dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
-duplexHalfFull = Alarm: Dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-duplexNok = Alarm: Dupleksitetsfeil:
-duplexOk = Dupleksitet er i orden.
-endOfEmail = Slutt p\u00e5 epost
-excLoss = "H\u00f8yt pakketap begrenser ytelsen, kontroller automatisk konfigurering mellom din datamaskin og nettverkssvitsjen.
-excessiveErrors = Alarm: Alvorlige pakketap, sjekk nettverkskabler.
-firewallNo = er ikke bak brannmur. [Oppn\u00e5dde forbindelse med midlertidig port]
-firewallYes = er trolig bak en brannmur . [Oppn\u00e5dde ikke forbindelse med midlertidig port]
-flowControlLimits = Flytkontroll i nettet begrenser ytelsen til
-found100mbps = Link med 100 Mbit/s FastEthernet funnet.
-found10gbps = Link med 10 Gbit/s 10 GigEthernet/OC-192 funnet.
-found10mbps = Link med 10 Mbit/s Ethernet funnet.
-found1gbps = Link med 1 Gbit/s GigabitEthernet funnet.
-found2.4gbps = Link med 2.4 Gbit/s OC-48 funnet.
-found45mbps = Link med 45 Mbit/s T3/DS3 funnet.
-found622mbps = Link med 622 Mbit/s OC-12 funnet.
-foundDialup = Link med oppringt modem funnet.
-foundDsl = Link med kabelmodem/DSL/T1 funnet.
-fullDuplex = full dupleks "Fast Ethernet"-subnett
-general = Annet
-generatingReport = Genererer feilrapport; denne vil bli sendt til personen du spesifiserer
-getWeb100Var = Viser variabler fra WEB100
-halfDuplex = Halv-dupleks "Fast Ethernet"-subnett
-id = TCP/Web100 nettverksdiagnostikkverkt\u00f8y
-immediate = umiddelbart
-inboundTest = Tcpbw100 innkommende test...
-inboundWrongMessage = Klient-til-tjener-ytelsestest: mottok feil melding
-incompatibleVersion = Inkompatibelt versjonsnummer
-incrRxBuf = \u00c5 \u00f8ke klientmaskinens mottaksbuffer
-incrTxBuf = \u00c5 \u00f8ke tjenermaskinens sendebuffer
-information = Informasjon
-initialization = Initialiserer...
-insufficient = Ikke nok data til \u00e5 bestemme type link.
-invokingMailtoFunction = Tcpbw100 sender post
-ipProtocol = IP-protokoll
-ipcFail = Feil ved kommunikasjon mellom prosesser, type link ikke bestemt.
-javaData = Opplysninger om Java
-kbyteBufferLimits = kbyte som begrenser ytelsen til
-limitNet = begrenset av nettet
-limitRx = begrenset av mottakeren
-limitTx = begrenset av senderen
-linkFullDpx = Linken er i full dupleksmodus.
-linkHalfDpx = Linken er i halv dupleksmodus.
-loggingWrongMessage = Logging til tjener: Mottok feil type melding
-lookupError = Greide ikke sl\u00e5 opp tjenerens IP-addresse
-mboxWrongMessage = Mellombokstest: Mottok feil type melding
-middlebox = Mellomboks
-middleboxFail = Tjenerfeil under mellombokstesting
-middleboxFail2 = Mellombokstest feilet!
-middleboxModifyingMss = Til orientering: En mellomboks i nettet forandrer valgt MSS
-middleboxTest = Tcpbw100 mellombokstest...
-moreDetails = Detaljer
-name = Navn
-ndtServerHas = NDT-tjeneren har en buffer p\u00e5
-noPktLoss1 = Intet pakketap
-noPktLoss2 = Intet pakketap
-numberOfTests = Antall tester
-of = av
-off = AV
-ok = OK
-oldDuplexMismatch = Advarsel: Gammel dupleksitetsfeil oppdaget:
-on = P\u00C5
-ooOrder = men pakker ankom i feil rekkef\u00f8lge
-options = Innstillinger
-osData = Operativsystem:
-otherClient = Tjeneren er for \u00f8yeblikket opptatt med en annen klient. Testen din vil begynne innen
-otherTraffic = Informasjon: Annen trafikk overbelaster linken
-outboundTest = Tcpbw100 utg\u00e5ende test...
-outboundWrongMessage = K-T ytelsestest: mottok feil type melding
-packetQueuing = Pakkek\u00f8ing
-packetQueuingInfo = TCP (Transmission Control Protocol) er en p\u00e5litelig nettverksprotokoll\n som overf\u00f8rer data mellom forskjellige maskiner. Den oppdager og motvirker\n automatisk feil og pakketap. TCP bruker buffere for \u00e5 oppn\u00e5 dette.\n I tillegg s\u00e5 har svitsjer og rutere buffere for \u00e5 h\u00e5ndtere tilfeller\n hvor mange maskiner sender til samme port, eller hvor hastigheter\n endres (for eksempel "Fast Ethernet" eller et DSL-modem).\n \n NDT-tjeneren genererer og sender 10 sekunder med data til klienten.\n I noen tilfeller genererer tjeneren data kjappere enn den klarer \u00e5\n sende ut pakker til nettverket (for eksempel en tjener med 2GHz CPU\n som sender til en klient koblet til via DSL). N\u00e5r dette skjer, hender\n det at det er igjen pakker i pakkek\u00f8en n\u00e5r de 10 sekundene har passert.\n TCP vil automatisk fors\u00f8ke \u00e5 sende disse pakkene, selv om tiden er ute,\n og klienten vil fortsette \u00e5 motta de. Dette vil f\u00f8re til at klienttesten\n kan kj\u00f8re litt lenger enn forventet.\n \n Dette hendte under kj\u00f8ringen av denne testen. Du trenger ikke gj\u00f8re noe\n for \u00e5 fikse dette.
-packetSizePreserved = Pakkest\u00f8rrelse blir bevart fra ende til ende
-packetsize = pakkkest\u00f8rrelse
-pc = Personlig datamaskin
-pctOfTime = % av tiden
-performedTests = Tester \u00e5 utf\u00f8re
-pktsRetrans = pakker ble retransmittert
-possibleDuplexFullHalf = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=full og maskin=halv
-possibleDuplexHalfFull = Alarm: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-possibleDuplexHalfFullWarning = Advarsel: Mulig dupleksitetsfeil oppdaget; svitsj=halv og maskin=full
-preferIPv6 = bruk IPv6 hvis mulig
-printDetailedStats = Viser detaljer
-protocolError = Protokollfeil! Mottok: 0x
-qSeen = ytelsestest: Pakkek\u00f8ing oppdaget
-ready = Tcpbw100 klar
-receiveBufferShouldBe = Informasjon: Mottaksbufferen burde v\u00e6re
-receiving = Henter resultater...
-reportProblem = Meld fra om problemer
-resultsParseError = Feil under tolkingen av testresultater!
-resultsTimeout = Advarsel! Tidsavbrudd under henting av data, mulig dupleksitetsfeil
-resultsWrongMessage = Testresultater: Mottok feil type melding
-rtt = rundreisetid
-rttFail = For lang rundreisetid til \u00e5 bestemme type link.
-runningInboundTest = Kj\u00f8rer 10 sekunders innkommende test (tjener-til-klient [T-K]) . . . .
-runningOutboundTest = Kj\u00f8rer 10 sekunders utg\u00e5ende test (klient-til-tjener [K-T]) . . . . . . .
-s2c = T-K
-s2cPacketQueuingDetected = [T-K]: Pakkek\u00f8ing oppdaget
-s2cThroughput = Ytelse tjener-klient
-s2cThroughputFailed = Ytelsestest fra tjener til klient FEILET!
-sackReceived = SACK-blokker ble mottatt.
-scalingFactors = Skaleringsfaktorer
-seconds = sekunder
-server = Tjener
-serverAcksReport = basert p\u00e5 ack fra tjeneren ansl\u00e5s linken til
-serverFault = Tjener Forkastningen; Ukjente forkastningen oppstod. Du kan pr\u00f8ve senere
-serverBusy = Tjener opptatt; For mange klienter i k\u00f8. Du kan pr\u00f8ve senere
-serverBusy15s = Tjener opptatt; vennligst vent 15 sekunder mens forrige test kj\u00f8res ferdig
-serverBusy30s = Tjener opptatt; vennligst vent 30 sekunder mens forrige test kj\u00f8res ferdig
-serverBusy60s = Tjener opptatt; vennligst vent 60 sekunder mens forrige test kj\u00f8res ferdig
-serverDataReports = Basert p\u00e5 data fra tjeneren ansl\u00e5s linken til
-serverFail = Tjenerfeil under mottak av data
-serverIpModified = Til orientering: Network Address Translation (NAT) forandrer klientmaskinens IP-adresse
-serverIpPreserved = Tjenermaskinens IP-adresse blir bevart fra ende til ende
-serverNotRunning = Tjenerprosess kj\u00f8rer ikke; vennligst start "web100srv" p\u00e5 tjeneren.
-serverSays = Tjeneren sier
-sfwFail = Enkel brannmurtest FEILET!
-sfwSocketFail = Enkel brannmurtest: Kan ikke opprette lytteport
-sfwTest = Enkel brannmurtest...
-sfwWrongMessage = Enkel brannmurtest: Mottok feil type melding
-showOptions = Vis innstillinger
-simpleFirewall = Enkel brannmur
-sleep10m = Venter 10 minutter...
-sleep12h = Venter 12 timer...
-sleep1d = Venter ett d\u00f8gn...
-sleep1m = Venter ett minutt...
-sleep2h = Venter to timer...
-sleep30m = Venter 30 minutter...
-sleep5m = Venter fem minutter...
-start = START
-startingTest = Starter test
-statistics = Statistikk
-stop = STOPP
-stopped = Testene ble stoppet!
-stopping = Stopper...
-systemFault = systemfeil
-test = Test
-testsuiteWrongMessage = Avtaler tester: Mottok feil type melding
-theSlowestLink = Den tregeste linken i stien mellom din maskin og tjeneren er et
-theoreticalLimit = Teoretisk grense for nettet er
-thisConnIs = Denne forbindelsen er
-timesPktLoss = ganger p\u00e5 grunn av pakketap
-toMaximizeThroughput = kilobyte for \u00e5 maksimere ytelsen
-toRunTest = for \u00e5 teste
-troubleReportFrom = Feilrapport fra NDT p\u00e5
-unableToDetectBottleneck = Tjeneren greide ikke \u00e5 bestemme flaskehalsen i stien
-unableToObtainIP = Kunne ikke f\u00e5 tak i den lokale IP-addressen
-unknownID = Ukjent test-ID
-unknownServer = Ukjent tjener
-unsupportedClient = Informasjon: Tjeneren st\u00f8tter ikke denne kommandolinjeklienten
-usingIpv4 = -- Bruker IPv4-addresse
-usingIpv6 = -- Bruker IPv6-addresse
-vendor = Leverand\u00f8r
-version = Versjon
-versionWrongMessage = Avtaler NDT-versjon: Mottok feil type melding
-web100Details = Detaljerte opplysninger fra Web100
-web100KernelVar = Kjernevariabler fra WEB100
-web100Stats = Statistikk fra WEB100
-web100Var = Variabler fra Web100
-web100rtt = Web100 melder at rundreisetid
-web100tcpOpts = Web100 melder at valgbare felt i TCP som p\u00e5virker ytelse er satt til:
-willImprove = vil forbedre ytelsen
-workstation = Arbeidsstasjon
-your = Din
-yourPcHas = Datamaskinen din har en buffer p\u00e5
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_nl_NL.properties Mon Apr 12 16:00:51 2010
+++ /dev/null
@@ -1,219 +0,0 @@
-10gbps = 10 Gbps 10 Gigabit Ethernet/OC-192 subnet
-10mbps = 10 Mbps Ethernet subnet
-10mins = 10 minutes
-12hours = 12 uren
-1day = 1 dag
-1gbps = 1.0 Gbps Gigabit Ethernet subnet
-1min = 1 minuut
-2.4gbps = 2.4 Gbps OC-48 subnet
-2hours = 2 uren
-30mins = 30 minuten
-45mbps = 45 Mbps T3/DS3 subnet
-5mins = 5 minuten
-622mbps = a 622 Mbps OC-12 subnet
-and = en
-architecture = Architectuur
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Packet queueing detected
-c2sThroughput = C2S doorvoer
-c2sThroughputFailed = C2S doorvoer test MISLUKT!
-cabledsl = Kabel/DSL modem
-cablesNok = Melding: erg veel netwerk errors, controleer de netwerk kabels
-cablesOk = Goede netwerk kabel(s) gevonden
-checkingFirewalls = Zoeken naar firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Zoeken naar tussenliggende routers . . . . . . . . . . . . . . . . . .
-clickStart = Klik START om de test te beginnen
-clickStart2 = Klik START om opnieuw te testen
-client = Client
-client2 = Client
-clientAcksReport = Client Acks zegt dat link is
-clientDataReports = Client Data zegt dat link is
-clientInfo = Client Systeem Details
-clientIpModified = Informatie: Network Address Translation (NAT) Uw router verandert het IP adres
-clientIpNotFound = Client IP adres niet gevonden. Voor IE gebruikers, verander de Java parameters\n Klik Tools - Internet Options - Security - Custom Level, scroll naar\n Microsoft VM - Java permissions en klik Custom, click Java Custom Settings\n Edit Permissions - Access to all Network Addresses, klik Enable en sla uw wijzigingen op
-clientIpPreserved = Server IP adressen zijn beveiligd End-to-End
-clientSays = maar Client zegt
-close = Sluiten
-comments = Commentaar
-congestNo = Geen netwerk overgebruik ontdekt.
-congestYes = Informatie: doorvoer is gelimiteerd door ander netwerk verkeer.
-connIdle = De connectie was idle
-connStalled = De connectie is vastgelopen
-connected = Verbonden met:
-connectedTo = is verbonden met een
-copy = Kopie
-defaultTests = Standaard tests
-delayBetweenTests = vertraging tussen tests
-detailedStats = Gedetailleerde Statistieken
-dialup = Inbel Modem
-dialup2 = Inbel
-done = Klaar.
-done2 = Tcpbw100 klaar
-dupAcksIn = meerdere dezelfde acks ontvangen
-duplexFullHalf = Alarm: Duplex Mismatch conditie gedetecteerd Switch=full en Host=half
-duplexHalfFull = Alarm: Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-duplexNok = Melding: Oude Duplex mismatch conditie gedetecteerd:
-duplexOk = Normale duplex instellingen gevonden.
-endOfEmail = Einde Van Email Bericht
-excLoss = Excessieve verloren pakketten zorgen voor een slechtere doorvoer, controleer de auto-negotiate functie op uw PC en de netwerk switch
-excessiveErrors = Alarm: Excessieve errors, controleer netwerk kabel(s).
-firewallNo = is niet achter een firewall. [Connectie naar de directe poort was succesvol]
-firewallYes = is waarschijnlijk achter een firewall. [Connectie naar de directe poort mislukt]
-flowControlLimits = Het network based flow control limiteerd de doorvoer tot
-found100mbps = 100 Mbps FastEthernet link gevonden.
-found10gbps = 10 Gbps 10 GigEthernet/OC-192 link gevonden.
-found10mbps = 10 Mbps Ethernet link gevonden.
-found1gbps = 1 Gbps GigabitEthernet link gevonden.
-found2.4gbps = 2.4 Gbps OC-48 link gevonden.
-found45mbps = 45 Mbps T3/DS3 link gevonden.
-found622mbps = 622 Mbps OC-12 link gevonden.
-foundDialup = Inbel modem link gevonden.
-foundDsl = Kabel modem/DSL/T1 link gevonden.
-fullDuplex = Full duplex Fast Ethernet subnet
-general = normaal
-generatingReport = Probleem Rapport Genereren: Dit rapport wordt gemaild naar de persoon die u opgeeft
-getWeb100Var = Vraag WEB100 Variabelen op
-halfDuplex = Half duplex Fast Ethernet subnet
-id = TCP/Web100 Network Diagnostic Tool
-immediate = direct
-inboundTest = Tcpbw100 inkomende test...
-inboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
-incompatibleVersion = Incompatibel versie nummer
-incrRxBuf = Verhogen van de client´s recieve buffer
-incrTxBuf = Verhogen van de server´s send buffer
-information = Informatie
-initialization = Initialisatie...
-insufficient = Niet genoeg data verzameld om link type te bepalen.
-invokingMailtoFunction = Tcpbw100 Mailto functie uitvoeren
-ipProtocol = IP protocol
-ipcFail = Inter-proces communicatie mislukt, onbekend link type.
-usingIpv4 = -- Maakt gebruik van IPv4 adres
-usingIpv6 = -- Maakt gebruik van IPv6 adres
-javaData = Java data
-kbyteBufferLimits = KByte buffer, dit limiteerd de doorvoer tot
-limitNet = netwerk gelimiteerd
-limitRx = ontvanger gelimiteerd
-limitTx = zender gelimiteerd
-linkFullDpx = Link aangepast naar Full Duplex mode
-linkHalfDpx = Link aangepast naar Half Duplex mode
-loggingWrongMessage = Loggen naar server: Verkeerd type bericht ontvangen
-lookupError = Kan geen remote IP adres verkrijgen
-mboxWrongMessage = Middlebox test: Verkeerd type bericht ontvangen
-middlebox = Middlebox
-middleboxFail = Server heeft gefaald while middlebox testing
-middleboxFail2 = Middlebox test MISLUKT!
-middleboxModifyingMss = Informatie: Netwerk Middlebox verandert MSS variabele
-middleboxTest = Tcpbw100 Middlebox test...
-moreDetails = Meer Details...
-name = Naam
-ndtServerHas = De NDT server heeft een
-noPktLoss1 = Geen verloren packets
-noPktLoss2 = Er zijn geen verloren packets geconstateerd
-numberOfTests = Aantal tests
-of = van
-off = OFF
-ok = OK
-oldDuplexMismatch = "Melding: Oude Duplex mismatch conditie gedetecteerd: "
-on = ON
-ooOrder = maar packets kwamen in de verkeerde volgorde aan
-options = Opties
-osData = OS data:
-otherClient = Op dit moment wordt een andere client geholpen, uw test begint zo spoedig mogelijk
-otherTraffic = Informatie: Ander netwerk verkeer vertraagd de connectie
-outboundTest = Tcpbw100 uitgaande test...
-outboundWrongMessage = C2S doorvoer test: Verkeerd type bericht ontvangen
-packetQueuing = Pakket queuing
-packetQueuingInfo = TCP (Transmission Control Protocol) verstuurd betrouwbaar tussen twee\n Internet hosts. Het detecteerd en hersteld error en verliezen.\n TCP gebruikt buffers om deze betrouwbaarheid te verzorgen. Daarnaast,\n hebben switches en routers ook buffers om situaties waarbij meerdere\n links pakketten versturen naar een enkele uitgaande poort of wanneer\n de link snelheid veranderd (FastEthernet naar DSL modem).\n\n De NDT server genereerd en verstuurd 10 seconden data naar de client. In\n sommige gevallen genereerd de server sneller pakketten dan er verstuurd\n kan worden naar het netwerk (bijv., een 2 GHz CPU naar een DSL link).\n Wanneer dit gebeurt, blijven sommige pakketten hangen in de server queue\n wanneer de 10 seconden timeout optreedt. TCP zal automatisch doorgaan\n met het verzenden van deze pakketten en de client zal deze ook blijven accepteren\n en behandelen. Dit kan ervoor zorgen dat de client test langer duurt dan gepland.\n\n Deze situatie heeft zich voorgedaan tijdens deze test. U hoeft geen actie te\n ondernemen om dit probleem op te lossen.\n
-packetSizePreserved = Pakket grootte is bewaard gebleven End-to-End
-packetsize = de Pakket grootte
-pc = PC
-pctOfTime = % van de tijd
-performedTests = Uitgevoerde tests
-pktsRetrans = pakketten opnieuw verstuurd
-possibleDuplexFullHalf = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=Full en Host=half
-possibleDuplexHalfFull = Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-possibleDuplexHalfFullWarning = Warning: Alarm: Mogelijke Duplex Mismatch conditie gedetecteerd Switch=half en Host=full
-preferIPv6 = prefereer IPv6
-printDetailedStats = Print Gedetaileerde Statistieken
-protocolError = Protocol error! Verwachtte 'prepare', maar kreeg: 0x
-qSeen = doorvoer test: Pakket queuing gedetecteerd
-ready = Tcpbw100 klaar voor gebruik
-receiveBufferShouldBe = Informatie: The ontvangst buffer zou moeten zijn
-receiving = Resultaten ontvangen...
-reportProblem = Rapporteer een probleem
-resultsParseError = Error bij het parsen van de test resultaten!
-resultsTimeout = Melding! Client time-out tijden het lezen van de data, mogelijk duplex mismatch is aanwezig
-resultsWrongMessage = Test resultaten: Verkeerd type bricht ontvangen
-rtt = RTT
-rttFail = Link detectie algorithme mislukt vanwege excessieve Round Trip Times.
-runningInboundTest = uitvoeren 10s inkomende test (server-naar-client [S2C]) . . . . . .
-runningOutboundTest = uitvoeren 10s uitgaande test (client-naar-server [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Pakket queueing gedetecteerd
-s2cThroughput = S2C doorvoer
-s2cThroughputFailed = S2C tdoorvoer test MISLUKT!
-sackReceived = SACK blocks ontvangen
-scalingFactors = Scaling Factoren
-seconds = seconden
-server = Server
-serverAcksReport = Server Acks zegt dat link is
-serverFault = De Fout van de server: de onbekende fout kwam voor. Gelieve te proberen opnieuw later
-serverBusy = Server Bezig: Teveel clients wachtende in queue. Probeer het later nog eens
-serverBusy15s = Server Bezig: Wacht alstublieft 15 seconden om de vorige test af te ronden
-serverBusy30s = Server Bezig: Wacht alstublieft 30 seconden om de vorige test af te ronden
-serverBusy60s = Server Bezig: Wacht alstublieft 60 seconden om de vorige test af te ronden
-serverDataReports = Server Data zegt dat link is
-serverFail = Server fout tijdens het ontvangen van data
-serverIpModified = Informatie: Network Address Translation (NAT) box verandert het IP adres van de client
-serverIpPreserved = Server IP adressen worden behouden End-to-End
-serverNotRunning = Server proces draait niet: start het web100srv proces op de server
-serverSays = Server zegt
-sfwFail = Simpele firewall test MISLUKT!
-sfwSocketFail = Simpele firewall test: Kan geen listen socket aanmaken
-sfwTest = Simpele firewall test...
-sfwWrongMessage = Simpele firewall test: Verkeerd bericht ontvangen
-showOptions = Toon opties
-simpleFirewall = Simpele firewall
-sleep10m = Slapen voor 10 minuten...
-sleep1m = Slapen voor 1 minuut...
-sleep30m = Slapen voor 30 minuten...
-sleep5m = Slapen voor 5 minuten...
-sleep12h = Slapen voor 12 uren...
-sleep1d = Slapen voor 1 dag...
-sleep2h = Slapen voor 2 uren...
-start = START
-startingTest = Starten test
-statistics = Statistieken
-stop = STOP
-stopped = De tests zijn gestopt!
-stopping = Stoppen...
-systemFault = Systeem Fout
-test = Test
-testsuiteWrongMessage = Overleggen test suite: Verkeerd type bericht ontvangen
-theSlowestLink = De traagste link in het end-to-end pad is een
-theoreticalLimit = De theoretische netwerk limiet is
-thisConnIs = Deze connectie is
-timesPktLoss = keren vanwege packet loss
-toMaximizeThroughput = kbytes om doorvoer te maximaliseren
-troubleReportFrom = Probleem Rapport van NDT op
-unableToDetectBottleneck = Server kan de bottleneck link niet bepalen.
-unableToObtainIP = Kan lokaal IP adres niet achterhalen
-unknownID = Onbekend test ID
-unknownServer = Onbekende server
-unsupportedClient = Informatie: De server ondersteund deze command line client niet
-vendor = Bedrijf
-version = Versie
-versionWrongMessage = Overleggen NDT versie: Verkeerd type bericht ontvangen
-web100Details = Web100 gedetaileerde Analyze
-web100KernelVar = WEB100 Kernel Variabelen
-web100Stats = WEB100 Enabled Statistieken
-web100Var = Web100 Variabelen
-web100rtt = Web100 rapporteerd de Round trip time
-web100tcpOpts = Web100 heeft voor TCP de volgende optionele settings overlegd:
-willImprove = zal de performance verbeteren
-workstation = Werkstation
-your = Uw
-yourPcHas = Uw PC/Werkstation heeft een
-connectingTo = Connecten naar
-toRunTest = start test
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_pt_BR.properties Tue May 18 10:32:00 2010
+++ /dev/null
@@ -1,218 +0,0 @@
-10gbps = sub-rede Gigabit Ethernet/OC-192 de 10 Gbps (10 Gbps 10 Gigabit Ethernet/OC-192 subnet)
-10mbps = sub-rede Ethernet de 10 Mbps (10 Mbps Ethernet subnet)
-10mins = 10 min
-12hours = 12 horas
-1day = 1 dia
-1gbps = sub-rede Gigabit Ethernet de 1.0 Gbps (1.0 Gbps Gigabit Ethernet subnet)
-1min = 1 min
-2.4gbps = sub-rede OC-48 de 2.4 Gbps ( 2.4 GbpsOC-48 subnet)
-2hours = 2 horas
-30mins = 30 min
-45mbps = sub-rede T3/DS3 de 45 Mbps (45 Mbps T3/DS3 subnet)
-5mins = 5 min
-622mbps = uma sub-rede OC-12 de 622 Mbps ( a 622 Mbps OC-12 subnet)
-and = e
-architecture = Arquitetura
-bytes = Bytes
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: Fila de pacotes detectada
-c2sThroughput = C2S taxa de transfer\u00EAncia
-c2sThroughputFailed = C2S teste de taxa de transfer\u00EAncia FALHOU!
-cabledsl = Cabo/ modem DSL
-cablesNok = Aviso: excessivos erros de rede detectados, verifique o(s) cabo(s) de rede
-cablesOk = Encontrado(s) cabo(s) de rede adequados
-checkingFirewalls = Procurando por firewalls . . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = Procurando por Middleboxes . . . . . . . . . . . . . . . . . .
-clickStart = Clique em INICIAR para iniciar o teste
-clickStart2 = Clique em INICIAR para executar o teste novamente
-client = Cliente
-client2 = Cliente
-clientAcksReport = Cliente Acks reporta que o link \u00E9
-clientDataReports = Dados do Cliente reporta que o link \u00E9
-clientInfo = Detalhes do Sistema do Cliente
-clientIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
-clientIpNotFound = Endere\u00E7o IP do Cliente n\u00E3o encontrado. Para usu\u00E1rios do IE, altere os par\u00E2metros do Java\n clique em Ferramentas - Op\u00E7\u00F5es da Internet - Seguran\u00E7a - N\u00EDvel personalizado, role para baixo at\u00E9 Microsoft VM - Permiss\u00F5es Java e clique em Customizar, clique Customizar configura\u00E7\u00F5es do Java\n Edite as Permiss\u00F5es - Acesse todos Endere\u00E7os de Rede, clique em habilitar e salve as altera\u00E7\u00F5es
-clientIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
-clientSays = mas o Cliente diz
-close = Fechar
-comments = Comment\u00E1rios
-congestNo = Congestionamento da rede n\u00E3o foi detectado
-congestYes = Informa\u00E7\u00E3o: taxa de transfer\u00EAncia \u00E9 limitada devido a outro tr\u00E1fego de rede.
-connIdle = A conex\u00E3o estava ociosa em
-connStalled = A conex\u00E3o foi interrompida
-connected = Conectado a:
-connectedTo = est\u00E1 conectado a um(a)
-copy = Copiar
-defaultTests = Testes padr\u00E3o
-delayBetweenTests = Atraso entre os testes
-detailedStats = Estat\u00EDsticas detalhadas
-dialup = Modem Dial-up
-dialup2 = Discada
-done = Conclu\u00EDdo
-done2 = Tcpbw100 conclu\u00EDdo.
-dupAcksIn = acks duplicados recebidos
-duplexFullHalf = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
-duplexHalfFull = Alerta: Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-duplexNok = Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:
-duplexOk = Dupla opera\u00E7\u00E3o normal encontrada.
-endOfEmail = Final da mensagem de E-mail
-excLoss = Excessiva perda de pacotes est\u00E1 impactando na sua performance, cheque a fun\u00E7\u00E3o auto-negotiate no seu computador local e no switch da rede
-excessiveErrors = Alerta: Erros excessivos, verifique o(s) cabo(s) de rede.
-firewallNo = n\u00E3o protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera conclu\u00EDda com \u00EAxito]
-firewallYes = provavelmente protegido por firewall. [Conex\u00E3o com a porta ef\u00EAmera falhou]
-flowControlLimits = O controle de fluxo da rede limita a taxa de transfer\u00EAncia em
-found100mbps = link de 100 Mbps FastEthernet encontrado.
-found10gbps = link de 10 Gbps 10 GigEthernet/OC-192 encontrado.
-found10mbps = link de 10 Mbps Ethernet encontrado.
-found1gbps = link de 1 Gbps GigabitEthernet encontrado.
-found2.4gbps = link de 2.4 Gbps OC-48 encontrado.
-found45mbps = link de 45 Mbps T3/DS3 encontrado.
-found622mbps = link de 622 Mbps OC-12 encontrado.
-foundDialup = link de Dial-up modem encontrado.
-foundDsl = link de modem a cabo/DSL/T1 encontrado.
-fullDuplex = sub-rede Full duplex Fast Ethernet
-general = Geral
-generatingReport = Gerando Relat\u00F3rio de Problemas: Esse relat\u00F3rio ser\u00E1 enviado por email para a pessoa que voc\u00EA especificar
-getWeb100Var = Buscar vari\u00E1veis web100
-halfDuplex = sub-rede Half duplex Fast Ethernet
-id = TCP/Web100 Ferramenta de Diagn\u00F3stico da Rede
-immediate = imediato
-inboundTest = Tcpbw100 teste de entrada inbound test...
-inboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
-incompatibleVersion = N\u00FAmero da vers\u00E3o incompat\u00EDvel
-incrRxBuf = Aumentando o buffer de recep\u00E7\u00E3o do cliente
-incrTxBuf = Aumentando o buffer de envio do servidor NDT
-information = Informa\u00E7\u00E3o
-initialization = Inicializa\u00E7\u00E3o...
-insufficient = Dados coletados s\u00E3o insuficientes para determinar tipo de link.
-invokingMailtoFunction = Tcpbw100 Chamando fun\u00E7\u00E3o Mailto
-ipProtocol = Protocolo IP
-ipcFail = Comunica\u00E7\u00F5es entre processos falhou, tipo de link desconhecido.
-usingIpv4 = -- Usando endere\u00E7o IPv4
-usingIpv6 = -- Usando endere\u00E7o IPv6
-javaData = Dados Java
-kbyteBufferLimits = KByte buffer que limita a taxa de transfer\u00EAncia para
-limitNet = limitada pela rede em
-limitRx = destinat\u00E1rio limitado
-limitTx = remetende limitado
-linkFullDpx = Link definido/configurado para modo Full Duplex
-linkHalfDpx = Link definido/configurado para modo Half Duplex
-loggingWrongMessage = Logando ao servidor: Tipo errado de mensagem foi recebido
-lookupError = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP remoto
-mboxWrongMessage = Teste Middlebox : Tipo errado de mensagem foi recebido
-middlebox = Middlebox
-middleboxFail = Servidor falhou durante o teste de middlebox
-middleboxFail2 = Teste Middlebox FALHOU!
-middleboxModifyingMss = Informa\u00E7\u00E3o: Middlebox da Rede est\u00E1 modificando a vari\u00E1vel MSS
-middleboxTest = Tcpbw100 teste Middlebox ...
-moreDetails = Mais Detalhes...
-name = Nome
-ndtServerHas = O servidor NDT possui um
-noPktLoss1 = Perda de pacotes n\u00E3o
-noPktLoss2 = N\u00E3o foi observada perda de pacotes
-numberOfTests = N\u00FAmero de testes
-of = de
-off = DESLIGADO
-ok = OK
-oldDuplexMismatch = "Aviso: Antiga dupla condi\u00E7\u00E3o de incompatibilidade detectada:"
-on = LIGADO
-ooOrder = mas os pacotes fotam recebidos fora da ordem
-options = Op\u00E7\u00F5es
-osData = Dados do SO:
-otherClient = Outro cliente est\u00E1 sendo servido, seu teste ter\u00E1 in\u00EDcio em
-otherTraffic = Informa\u00E7\u00E3o: Tr\u00E1fego de outras redes est\u00E1 congestionando o link
-outboundTest = Tcpbw100 teste de sa\u00EDda...
-outboundWrongMessage = C2S teste de taxa de transfer\u00EAncia: Tipo errado de mensagem foi recebido
-packetQueuing = Filas de Pacotes
-packetQueuingInfo = TCP (Protocolo de Controle de Transmiss\u00E3o) transfere dados de forma confi\u00E1vel entre dois\n hosts. Ele automaticamente detecta e recupera de erros\ n e perdas. O TCP usa buffers para prover essa confiabilidade. Al\u00E9m disso, switches e roteadores usam buffers para lidar/gerenciar casos em que v\u00E1rios links enviam pacotes para uma \u00FAnica sa\u00EDda ou a velocuidade do link muda\n (Ethernet R\u00E1pida para modem DSL.\n\n O servidor NDT gera e envia 10 segundos de dados para o cliente. Em\n alguns casos o servidor pode gerar dados mais r\u00E1pido do que enviar pacotes para a rede (ex: um CPU de 2GHz enviando para um cliente conectado a um DSL).\n Quando isso ocorre, alguns pacotes podem ficar enfileiirados na sa\u00EDda do servidor\n quando \u00E9 expirado o tempo de 10 segundos. O TCP automaticamente continuar\u00E1 a enviar esses pacotes enfileirados e o cliente vai continuar aceitando e processando esses pacotes. Isso resulta em um maior tempo de execu\u00E7\u00E3o do teste do cliente. Essa situa\u00E7\u00E3o ocorreu durante esse teste. Nenhuma a\u00E7\u00E3o \u00E9 requerida para\n resolver esse problema.
-packetSizePreserved = O Tamanho do Pacote \u00E9 preservado Fim a Fim
-packetsize = o tamanho do Pacote
-pc = PC
-pctOfTime = % do tempo
-performedTests = Testes executados
-pktsRetrans = pacotes retransmitidos
-possibleDuplexFullHalf = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=Full e Host=half
-possibleDuplexHalfFull = Alarme: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-possibleDuplexHalfFullWarning = Aviso: Poss\u00EDvel Dupla condi\u00E7\u00E3o de incompatibilidade detectada Switch=half e Host=full
-preferIPv6 = prefira IPv6
-printDetailedStats = Imprima as Estat\u00EDsticas Detalhadas
-protocolError = Erro de Protocolo! Esperado 'prepare', obtido: 0x
-qSeen = teste de taxa de transfer\u00EAncia: Enfileiramento de pacotes detectado
-ready = Tcpbw100 pronto
-receiveBufferShouldBe = Informa\u00E7\u00E3o: O buffer de recep\u00E7\u00E3o deve ser
-receiving = Recebendo resultados...
-reportProblem = Reportar problema
-resultsParseError = Erro ao analisar os resultados do teste!
-resultsTimeout = Aviso! Tempo do cliente expirou ao ler os dados, poss\u00EDvel exist\u00EAncia de uma dupla condi\u00E7\u00E3o de incompatibilidade
-resultsWrongMessage = Resultados dos Testes: Tipos errados de mensagem foram recebidos
-rtt = RTT
-rttFail = Algor\u00EDtmo de detec\u00E7\u00E3o do link falhou devido a excessivos
-runningInboundTest = executando teste de entrada de 10s (servidor para cliente [S2C]) . . . . . .
-runningOutboundTest = executando teste de sa\u00EDda de 10s (cliente para servidor [C2S]) . . . . .
-s2c = S2C
-s2cPacketQueuingDetected = [S2C]: Enfileiramento de pacotes detectados
-s2cThroughput = S2C taxa de transfer\u00EAncia
-s2cThroughputFailed = S2C teste de taxa de transfer\u00EAncia FALHOU!
-sackReceived = Blocos SACK recebidos
-scalingFactors = Fatores de Escala/escalonamento
-seconds = segundos
-server = Servidor
-serverAcksReport = Servidor Acks reporta que o link \u00E9
-serverBusy = Servidor Ocupado: Muitos clientes aguardando na fila do servidor. Por favor, tente novamente mais tarde.
-serverBusy15s = Servidor Ocupado: Por favor, aguarde 15 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverBusy30s = Servidor Ocupado: Por favor, aguarde 30 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverBusy60s = Servidor Ocupado: Por favor, aguarde 60 segundos para a finaliza\u00E7\u00E3o do teste anterior
-serverDataReports = Dados do servidor reporta que o link \u00E9
-serverFail = Servidor falhou enquanto recebia dados
-serverIpModified = Informa\u00E7\u00E3o: Network Address Translation (NAT) box est\u00E1 modificando o endere\u00E7o IP do cliente
-serverIpPreserved = Endere\u00E7os IP do Servidor s\u00E3o preservados fim a fim
-serverNotRunning = Processo do servidor n\u00E3o est\u00E1 executando : inicie o processo web100srv no servidor remoto
-serverSays = Servidor diz
-sfwFail = Teste simples de firewall FALHOU!
-sfwSocketFail = Teste simples de firewall: N\u00E3o pode ser criado socket para escuta
-sfwTest = Teste simples de firewall...
-sfwWrongMessage = Teste simples de firewall: Tipos errados de mensagem foram recebidos
-showOptions = Mostrar op\u00E7\u00F5es
-simpleFirewall = Firewall simples
-sleep10m = Dormindo por 10 min...
-sleep1m = Dormindo por 1 min...
-sleep30m = Dormindo por 30 min...
-sleep5m = Dormindo por 5 min...
-sleep12h = Dormindo por 12 horas...
-sleep1d = Dormindo por 1 dia...
-sleep2h = Dormindo por 2 horas...
-start = INICIAR
-startingTest = Iniciando Teste
-statistics = Estat\u00EDsticas
-stop = PARAR
-stopped = Os testes foram interrompidos!
-stopping = Parando...
-systemFault = Falha do Sistema
-test = Teste
-testsuiteWrongMessage = Negotiating test suite: Tipos errados de mensagem foram recebidos
-theSlowestLink = O link mais lento no caminho fim a fim \u00E9
-theoreticalLimit = O limite te\u00F3rico da rede \u00E9
-thisConnIs = A conex\u00E3o est\u00E1
-timesPktLoss = vezes devido a perda de pacotes
-toMaximizeThroughput = kbytes para maximizar a taxa de transfer\u00EAncia
-troubleReportFrom = Trouble Report from NDT on
-unableToDetectBottleneck = Servidor n\u00E3o conseguiu determinar o tipo de gargalo.
-unableToObtainIP = N\u00E3o foi poss\u00EDvel obter o endere\u00E7o IP local
-unknownID = ID de teste desconhecido
-unknownServer = Servidor desconhecido
-unsupportedClient = Informa\u00E7\u00E3o: Esse servidor n\u00E3o fornece suporte a essa linha de comando
-vendor = Fabricante
-version = Vers\u00E3o
-versionWrongMessage = Negociando vers\u00E3o do NDT : Tipo errado de mensagem foi recebido
-web100Details = An\u00E1lise detalhada WEB100
-web100KernelVar = Vari\u00E1veis do Kernel WEB100
-web100Stats = Estat\u00EDsticas WEB100 dispon\u00EDveis
-web100Var = Vari\u00E1veis Web100
-web100rtt = Web100 reporta o tempo de Ida e Volta
-web100tcpOpts = Web100 verifica que TCP negociou as configura\u00E7\u00F5es de performance opicionais para:
-willImprove = ir\u00E1 melhorar a performance
-workstation = Esta\u00E7\u00E3o de trabalho
-your = Sua
-yourPcHas = Seu PC/Esta\u00E7\u00E3o de Trabalho tem um
-connectingTo = Conectando a
-toRunTest = para executar o teste
=======================================
--- /branches/android/Applet/Tcpbw100_msgs_ru_RU.properties Tue Apr 13 19:14:36 2010
+++ /dev/null
@@ -1,217 +0,0 @@
-10gbps = 10 \u0413\u0431\u0438\u0442/\u0441\u0435\u043A 10 Gigabit Ethernet/OC-192 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-10mbps = 10 \u041C\u0431\u0438\u0442/\u0441\u0435\u043A Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-10mins = 10 \u043C\u0438\u043D\u0443\u0442
-12hours = 12 \u0447\u0430\u0441\u043E\u0432
-1day = 1 \u0434\u0435\u043D\u044C
-1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 Gigabit Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-1min = 1 \u043C\u0438\u043D
-2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-2hours = 2 \u0447\u0430\u0441\u0430
-30mins = 30 \u043C\u0438\u043D\u0443\u0442
-45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-5mins = 5 \u043C\u0438\u043D\u0443\u0442
-622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-and = \u0438
-architecture = \u0410\u0440\u0445\u0438\u0442\u0435\u043A\u0442\u0443\u0440\u0430
-bytes = \u0431\u0430\u0439\u0442
-c2s = C2S
-c2sPacketQueuingDetected = [C2S]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-c2sThroughput = C2S \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043Da\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-c2sThroughputFailed = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B !
-cabledsl = \u043A\u0430\u0431\u0435\u043B\u044C\u043D\u044B\u0439 \u043C\u043E\u0434\u0435\u043C
-cablesNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C
-cablesOk = \u0421\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C \u0432 \u043F\u043E\u0440\u044F\u0434\u043A\u0435
-checkingFirewalls = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u044D\u043A\u0440\u0430\u043D\u043E\u0432. . . . . . . . . . . . . . . . . . .
-checkingMiddleboxes = \u041F\u0440\u043E\u0432\u0435\u0440\u043A\u0430 \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0441\u0435\u0442\u0438. . . . . . . . . . . . . . . . . .
-clickStart = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043D\u0430\u0447\u0430\u0442\u044C \u0442\u0435\u0441\u0442
-clickStart2 = \u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0421\u0422\u0410\u0420\u0422, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
-client = \u041A\u043B\u0438\u0435\u043D\u0442
-client2 = \u041A\u043B\u0438\u0435\u043D\u0442
-clientAcksReport = \u041A\u043B\u0438\u0435\u043D\u0442 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u043B\u0438\u043D\u043A
-clientDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E
-clientInfo = \u0414\u0430\u043D\u043D\u044B\u0435 \u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0435
-clientIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-clientIpNotFound = IP-\u0430\u0434\u0440\u0435\u0441 \u041A\u043B\u0438\u0435\u043D\u0442\u0430 \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D. \u0414\u043B\u044F IE \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439, \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B Java \n \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0432 \u043C\u0435\u043D\u044E Service \u2013 Network Options - Security - Level, \u043F\u0440\u043E\u043B\u0438\u0441\u0442\u043D\u0438\u0442\u0435 \u0432\u043D\u0438\u0437 \u0434\u043E \n Microsoft VM - Java Permissions \u0438 \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 Custom, \u0449\u0435\u043B\u043A\u043D\u0438\u0442\u0435 na Java Custom Settings \n Edit Persmissions - \u0434\u043E\u0441\u0442\u0443\u043F \u043A\u043E \u0432\u0441\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0430\u0434\u0440\u0435\u0441\u0430\u043C, \u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u043A\u043D\u043E\u043F\u043A\u0443 En\u0430ble \u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0438\u0442e \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F
-clientIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0430\u043D\u0438\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-clientSays =, \u043D\u043E \u043A\u043B\u0438\u0435\u043D\u0442 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
-close = \u0417\u0430\u043A\u0440\u044B\u0442\u044C
-comments = \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0438
-congestNo = \u041F\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0430.
-congestYes = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430 \u043F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u043C \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u0442\u0440\u0430\u0444\u0438\u043A\u043E\u043C.
-connIdle = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043F\u0440\u043E\u0445\u043B\u0430\u0436\u0434\u0430\u043B\u043E\u0441\u044C \u0431\u0435\u0437 \u0442\u0440\u0430\u0444\u0438\u043A\u0430
-connStalled = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u0441\u0442\u0440\u044F\u043B\u043E
-connected = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u043E \u043A:
-connectedTo = \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D \u043A
-copy = \u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C
-defaultTests = \u0422\u0435\u0441\u0442\u044B \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044B\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
-delayBetweenTests = \u0417\u0430\u0434\u0435\u0440\u0436\u043A\u0430 \u043C\u0435\u0436\u0434\u0443 \u0442\u0435\u0441\u0442\u0430\u043C\u0438
-detailedStats = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0430\u044F \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
-dialup = \u043C\u043E\u0434\u0435\u043C
-dialup2 = \u043C\u043E\u0434\u0435\u043C
-done = \u0413\u043E\u0442\u043E\u0432\u043E
-done2 = Tcpbw100 \u0433\u043E\u0442\u043E\u0432\u043E
-dupAcksIn = \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B \u0434\u0443\u0431\u043B\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 acks
-duplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-duplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-duplexNok = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0440\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:
-duplexOk = \u041D\u043E\u0440\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C \u0440\u0430\u0431\u043E\u0442\u044B \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D.
-endOfEmail = \u041E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u0435 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-excLoss = \u0427\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u044B\u0435 \u043F\u043E\u0442\u0435\u0440\u0438 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u0442\u0441\u044F \u043D\u0430 \u0440\u0430\u0431\u043E\u0442\u0435 \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0444\u0443\u043D\u043A\u0446\u0438\u044E \u0430\u0432\u0442\u043E-\u0441\u043E\u0433\u043B\u0430\u0441\u043E\u0432\u0430\u043D\u0438\u044F \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u041F\u041A \u0438 \u043D\u0430 \u0431\u043B\u0438\u0436\u0430\u0439\u0448\u0435\u043C \u0441\u0435\u0442\u0435\u0432\u043E\u043C \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u0435
-excessiveErrors = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0448\u0438\u0431\u043E\u043A, \u043F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043A\u0430\u0431\u0435\u043B\u044C(\u044B).
-firewallNo = \u043D\u0435 \u043D\u0430\u0445\u043E\u0434\u0438\u0442\u0441\u044F \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442 \u043F\u0440\u043E\u0448\u043B\u043E \u0443\u0441\u043F\u0435\u0448\u043D\u043E]
-firewallYes = \u0432\u0435\u0440\u043E\u044F\u0442\u043D\u043E \u0437\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u044B\u043C \u044D\u043A\u0440\u0430\u043D\u043E\u043C. [\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F \u043A \u0432\u0438\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u043E\u043C\u0443 \u043F\u043E\u0440\u0442\u0443]
-flowControlLimits = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u043C \u043F\u043E\u0442\u043E\u043A\u043E\u043C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-found100mbps = 100 \u041C\u0431\u0438\u0442/\u0441 FastEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found10gbps = 10 \u0413\u0431\u0438\u0442/\u0441 10 GigEthernet/OC-192 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found10mbps = 10 \u041C\u0431\u0438\u0442/\u0441 Ethernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found1gbps = 1 \u0413\u0431\u0438\u0442/\u0441 GigabitEthernet \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found2.4gbps = 2,4 \u0413\u0431\u0438\u0442/\u0441 OC-48 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found45mbps = 45 \u041C\u0431\u0438\u0442/\u0441 T3/DS3 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-found622mbps = 622 \u041C\u0431\u0438\u0442/\u0441 OC-12 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-foundDialup = \u041C\u043E\u0434\u0435\u043C\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-foundDsl = \u041A\u0430\u0431\u0435\u043B\u044C\u043D\u043E\u0435 modem/DSL/T1 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E.
-fullDuplex = \u043F\u043E\u043B\u043D\u043E\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C
-general= \u041E\u0431\u0449\u0438\u0435
-generatingReport = \u0413\u043E\u0442\u043E\u0432\u0438\u0442\u0441\u044F \u043E\u0442\u0447\u0435\u0442 \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435: \u0414\u0430\u043D\u043D\u044B\u0439 \u043E\u0442\u0447\u0435\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0441\u043B\u0430\u043D \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C \u043B\u0438\u0446\u0430\u043C
-getWeb100Var = \u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-halfDuplex = \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u0430\u044F Fast Ethernet \u043F\u043E\u0434\u0441\u0435\u0442\u044C ID = TCP/Web100 Network Diagnostic Tool (NDT)
-immediate = \u0441\u0438\u044E \u043C\u0438\u043D\u0443\u0442\u0443
-inboundTest = Tcpbw100 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
-inboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C:\u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-incompatibleVersion = \u041D\u0435\u0441\u043E\u0432\u043C\u0435\u0441\u0442\u0438\u043C\u0430\u044F \u0432\u0435\u0440\u0441\u0438\u044F
-incrRxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u0435\u043C\u043D\u043E\u0433\u043E \u0431\u0443\u0444\u0435\u0440\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-incrTxBuf = \u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u0438 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 NDT
-information = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F
-initialization = \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F ...
-insufficient = \u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0434\u0430\u043D\u043D\u044B\u0445, \u0441\u043E\u0431\u0440\u0430\u043D\u043D\u044B\u0445 \u0434\u043B\u044F \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u044F \u0442\u0438\u043F\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F.
-invokingMailtoFunction = Tcpbw100 \u0412\u044B\u0437\u043E\u0432 \u0444\u0443\u043D\u043A\u0446\u0438\u0438 Mailto
-ipProtocol = \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B
-ipcFail = \u041C\u0435\u0436\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043D\u043E\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u0431\u044B\u043B\u043E \u043D\u0430\u0440\u0443\u0448\u0435\u043D\u043E, \u0442\u0438\u043F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D.
-usingIpv4 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv4 \u0430\u0434\u0440\u0435\u0441
-usingIpv6 = -- \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u044E IPv6 \u0430\u0434\u0440\u0435\u0441
-javaData = Java \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
-kbyteBufferLimits = \u041A\u0411\u0430\u0439\u0442 \u0440\u0430\u0437\u043C\u0435\u0440 \u0431\u0443\u0444\u0435\u0440\u0430, \u043A\u043E\u0442\u043E\u0440\u044B\u0439 \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-limitNet = \u0441\u0435\u0442\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D\u0430
-limitRx = \u043F\u0440\u0438\u0435\u043C\u043D\u0438\u043A \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
-limitTx = \u043E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u0435\u043B\u044C \u043E\u0433\u0440\u0430\u043D\u0438\u0447\u0435\u043D
-linkFullDpx = \u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u043D\u044B\u0439 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0439 \u0440\u0435\u0436\u0438\u043C
-linkHalfDpx =\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u043E \u0432 \u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441\u043D\u043E\u043C \u0440\u0435\u0436\u0438\u043C\u0435
-loggingWrongMessage = \u0421\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 \u043D\u0430 \u0441\u0435\u0440\u0432\u0435\u0440: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-lookupError = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u044B\u0439 IP-\u0430\u0434\u0440\u0435\u0441
-mboxWrongMessage = \u0422\u0435\u0441\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-middlebox = \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
-middleboxFail = \u0418\u0421\u0414 \u043D\u0435 \u0441\u043C\u043E\u0433 \u043F\u0440\u043E\u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E
-middleboxFail2 = \u0422\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u044B\u0445 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432 \u0431\u044B\u043B\u043E \u043E\u0431\u043E\u0440\u0432\u0430\u043D\u043E !
-middleboxModifyingMss = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438 \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 MSS(\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0441\u0435\u0433\u043C\u0435\u043D\u0442\u0430 \u0434\u0430\u043D\u043D\u044B\u0445)
-middleboxTest = Tcpbw100 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u0442 \u043F\u0440\u043E\u043C\u0435\u0436\u0443\u0442\u043E\u0447\u043D\u043E\u0435 \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u0441\u0435\u0442\u0438...
-moreDetails = \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0435\u0435 ...
-name = \u0438\u043C\u044F
-ndtServerHas = NDT \u0441\u0435\u0440\u0432\u0435\u0440
-noPktLoss1 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E
-noPktLoss2 = \u041F\u043E\u0442\u0435\u0440\u044C \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u043D\u0435 \u043D\u0430\u0431\u043B\u044E\u0434\u0430\u043B\u043E\u0441\u044C
-numberOfTests = \u0447\u0438\u0441\u043B\u043E \u0442\u0435\u0441\u0442\u043E\u0432
-of =
-off = \u0412\u044B\u043A\u043B
-ok = \u0412\u0432\u0435\u0441\u0442\u0438
-oldDuplexMismatch = \u201C\u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u0420\u0430\u043D\u0435\u0435 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043D\u043E\u0435 \u043D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 \u0441\u043D\u043E\u0432\u0430 \u0431\u044B\u043B\u043E \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E:"
-on = \u0412\u043A\u043B
-ooOrder = \u043D\u043E \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0440\u0438\u0431\u044B\u043B\u0438 \u0432\u043D\u0435 \u043F\u043E\u0440\u044F\u0434\u043A\u0430
-options = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432
-osData = \u0414\u0430\u043D\u043D\u044B\u0435 \u041E\u043F\u0435\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u043E\u0439 \u0421\u0438\u0441\u0442\u0435\u043C\u044B:
-otherClient = \u0414\u0440\u0443\u0433\u043E\u0439 \u043A\u043B\u0438\u0435\u043D\u0442 \u0432 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F, \u0432\u0430\u0448 \u0442\u0435\u0441\u0442 \u043D\u0430\u0447\u043D\u0435\u0442\u0441\u044F \u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435
-otherTraffic = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u043E\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043A \u0437\u0430\u0431\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u043B\u0438\u043D\u043A
-outboundTest = Tcpbw100 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0439 \u0442\u0435\u0441\u0442 ...
-outboundWrongMessage = C2S \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-packetQueuing = \u041D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-packetQueuingInfo = TCP (Transmission Control Protocol) \u043D\u0430\u0434\u0435\u0436\u043D\u043E \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0435 \u043C\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043C\u044F\n \u0445\u043E\u0441\u0442\u0430\u043C\u0438 \u0432 \u0418\u043D\u0442\u0435\u0440\u043D\u0435\u0442\u0435. \u041E\u043D \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0438 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u0442\u0441\u044F \u043F\u043E\u0441\u043B\u0435 \u043E\u0448\u0438\u0431\u043E\u043A \u0438\n \u043F\u043E\u0442\u0435\u0440\u044C. TCP \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044E \u0447\u0442\u043E\u0431\u044B \u043E\u0431\u0435\u0441\u043F\u0435\u0447\u0438\u0442\u044C \u044D\u0442\u0443 \u043D\u0430\u0434\u0435\u0436\u043D\u043E\u0441\u0442\u044C. \u041A\u0440\u043E\u043C\u0435 \u0442\u043E\u0433\u043E,\n \u0432 \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u043A\u043E\u043C\u043C\u0443\u0442\u0430\u0442\u043E\u0440\u0430\u0445 \u0438 \u043C\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043E\u0440\u0430\u0445 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0431\u0443\u0444\u0435\u0440\u0438\u0437\u0430\u0446\u0438\u044F \u0432 \u0441\u043B\u0443\u0447\u0430\u044F\u0445, \u043A\u043E\u0433\u0434\u0430 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439 \n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442 \u043F\u0430\u043A\u0435\u0442\u044B \u0432 \u043E\u0434\u043D\u043E \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0435\u0435 \u0438\u043B\u0438 \u043A\u043E\u0433\u0434\u0430 \u0441\u043A\u043E\u0440\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442\u0441\u044F \n (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0441 FastEthernet \u0434\u043E DSL \u043C\u043E\u0434\u0435\u043C\u0430).\n\n NDT \u0441\u0435\u0440\u0432\u0435\u0440 \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u0442 \u043A\u0430\u0436\u0434\u044B\u0435 10 \u0441\u0435\u043A\u0443\u043D\u0434 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u0443.\n \u0412 \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u0441\u043B\u0443\u0447\u0430\u044F\u0445 \u0441\u0435\u0440\u0432\u0435\u0440 \u043C\u043E\u0436\u0435\u0442 \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E\u0441\u044B\u043B\u0430\u0435\u043C\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0431\u044B\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043C \u043C\u043E\u0436\u0435\u0442 \u043F\u043E\u0441\u044B\u043B\u0430\u0442\u044C \u043F\u0430\u043A\u0435\u0442\u044B\n \u0432 \u0441\u0435\u0442\u044C (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440 \u0432 \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u043E\u043C 2 \u0413\u0413\u0446 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0435\u0433\u043E \u0434\u0430\u043D\u043D\u044B\u0435 \u043D\u0430 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 DSL).\n \u041A\u043E\u0433\u0434\u0430 \u044D\u0442\u043E \u0441\u043B\u0443\u0447\u0430\u0435\u0442\u0441\u044F, \u043D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u043F\u0430\u043A\u0435\u0442\u044B \u043C\u043E\u0433\u0443\u0442 \u043E\u0441\u0442\u0430\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u0439 \u043E\u0447\u0435\u0440\u0435\u0434\u044C\u044C\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\n \u0434\u0430\u0436\u0435 \u043A\u043E\u0433\u0434\u0430 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0430\u0439\u043C\u0435\u0440 \u0438\u0441\u0442\u0435\u0447\u0435\u0442. TCP \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u0438 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\n \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u044F\u0442\u044C \u044D\u0442\u0438 \u043F\u0430\u043A\u0435\u0442\u044B \u0438\u0437 \u043E\u0447\u0435\u0440\u0435\u0434\u0438, \u0438 \u043A\u043B\u0438\u0435\u043D\u0442 \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u043E\u0434\u043E\u043B\u0436\u0430\u0442\u044C \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u0438\n \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u0442\u044C \u044D\u0442\u0438 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u044B. \u042D\u0442\u043E \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043A\n \u0442\u043E\u043C\u0443 \u0447\u0442\u043E \u0442\u0435\u0441\u0442 \u043C\u043E\u0436\u0435\u0442 \u0437\u0430\u0442\u044F\u043D\u0443\u0442\u044C\u0441\u044F.\n\n \u042D\u0442\u043E \u0441\u043B\u0443\u0447\u0438\u043B\u043E\u0441\u044C \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u044D\u0442\u043E\u0433\u043E \u0442\u0435\u0441\u0442\u0430. \u041D\u0438\u043A\u0430\u043A\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043F\u0440\u0435\u0434\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0442\u044C \u043D\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044F, \u0447\u0442\u043E\u0431\u044B\n \u0440\u0435\u0448\u0438\u0442\u044C \u044D\u0442\u0443 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0443.
-packetSizePreserved = \u0420\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u043B\u0441\u044F \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-packetsize = \u0440\u0430\u0437\u043C\u0435\u0440 \u043F\u0430\u043A\u0435\u0442\u0430
-pc = \u041F\u041A
-pctOfTime =% \u0432\u0440\u0435\u043C\u0435\u043D\u0438
-performedTests = \u0417\u0430\u043A\u043E\u043D\u0447\u0435\u043D\u043D\u044B\u0435 \u0442\u0435\u0441\u0442\u044B
-pktsRetrans = \u043F\u0430\u043A\u0435\u0442\u044B \u043F\u0435\u0440\u0435\u0441\u043B\u0430\u043D\u043D\u044B\u0435 \u043F\u043E\u0432\u0442\u043E\u0440\u043D\u043E
-possibleDuplexFullHalf = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-possibleDuplexHalfFull = \u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-possibleDuplexHalfFullWarning = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0435 \u041D\u0435\u0441\u043E\u0432\u043F\u0430\u0434\u0435\u043D\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430 Switch=\u043F\u043E\u043B\u0443\u0434\u0443\u043F\u043B\u0435\u043A\u0441 \u0438 Host=\u0434\u0443\u043F\u043B\u0435\u043A\u0441
-preferIPv6 = \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0435\u043D\u0438\u0435 IPv6
-printDetailedStats = \u041D\u0430\u043F\u0435\u0447\u0430\u0442\u0430\u0442\u044C \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u0443\u044E \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0443
-protocolError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u043E\u0442\u043E\u043A\u043E\u043B\u0430! \u041E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C 'prepare', \u043F\u043E\u043B\u0443\u0447\u0438\u043B\u0438: 0x
-qSeen = \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-ready = Tcpbw100 \u0433\u043E\u0442\u043E\u0432
-receiveBufferShouldBe = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u041F\u0440\u0438\u0435\u043C\u043D\u044B\u0439 \u0431\u0443\u0444\u0435\u0440 \u0434\u043E\u043B\u0436\u0435\u043D \u0431\u044B\u0442\u044C
-receiving = \u041F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 ...
-reportProblem = \u0421\u043E\u043E\u0431\u0449\u0438\u0442\u044C \u043E \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0435
-resultsParseError = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0440\u0430\u0437\u0431\u043E\u0440\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F!
-resultsTimeout = \u041F\u0440\u0435\u0434\u0443\u043F\u0440\u0435\u0436\u0434\u0435\u043D\u0438\u0435! \u041A\u043B\u0438\u0435\u043D\u0442 \u043E\u0442\u0432\u0430\u043B\u0438\u043B\u0441\u044F \u043F\u043E \u0442\u0430\u0439\u043C-\u0430\u0443\u0442\u0443 \u043F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445, \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043D\u0435\u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u0443\u043F\u043B\u0435\u043A\u0441\u0430
-resultsWrongMessage = \u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-rtt = RTT
-rttFail = \u0430\u043B\u0433\u043E\u0440\u0438\u0442\u043C \u043E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u0438\u044F \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0435 \u0441\u0440\u0430\u0431\u043E\u0442\u0430\u043B \u0438\u0437-\u0437\u0430 \u0447\u0440\u0435\u0437\u043C\u0435\u0440\u043D\u043E\u0439 \u0434\u0432\u0443\u0445\u0441\u0442\u043E\u0440\u043E\u043D\u043D\u0435\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0438 (RTT).
-runningInboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0432\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043E\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043A \u043A\u043B\u0438\u0435\u043D\u0442\u0443 [S2C]). . . . . .
-runningOutboundTest = \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 10-\u0442\u0438 \u0441\u0435\u043A\u0443\u043D\u0434\u043D\u044B\u0439 \u0442\u0435\u0441\u0442 \u0438\u0441\u0445\u043E\u0434\u044F\u0449\u0438\u0445 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 (\u043A\u043B\u0438\u0435\u043D\u0442-\u0441\u0435\u0440\u0432\u0435\u0440 [C2S]). . . . .
-S2C = S2C
-s2cPacketQueuingDetected = [S2C]: \u041E\u0431\u043D\u0430\u0440\u0443\u0436\u0435\u043D\u043E \u043D\u0430\u043A\u043E\u043F\u043B\u0435\u043D\u0438\u0435 \u043F\u0430\u043A\u0435\u0442\u043E\u0432 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438
-s2cThroughput = S2C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0430\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C
-s2cThroughputFailed = S2C \u0442\u0435\u0441\u0442 \u043D\u0430 \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u041D\u0415 \u0421\u0420\u0410\u0411\u041E\u0422\u0410\u041B !
-sackReceived = \u0431\u043B\u043E\u043A\u0438 SACK \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u044B
-scalingFactors = \u0424\u0430\u043A\u0442\u043E\u0440\u044B \u041C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F
-seconds = \u0441\u0435\u043A\u0443\u043D\u0434
-server = \u0421\u0435\u0440\u0432\u0435\u0440
-serverAcksReport = \u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0442\u0432\u0435\u0442\u0438\u043B \u0441 Ack \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-serverBusy = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 \u043E\u0436\u0438\u0434\u0430\u044E\u0442 \u0432 \u043E\u0447\u0435\u0440\u0435\u0434\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u043F\u043E\u0437\u0436\u0435
-serverBusy15s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 15 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverBusy30s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 30 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverBusy60s = \u0421\u0435\u0440\u0432\u0435\u0440 \u0437\u0430\u043D\u044F\u0442: \u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u043E\u0436\u0434\u0438\u0442\u0435 60 \u0441\u0435\u043A\u0443\u043D\u0434 \u043F\u043E\u043A\u0430 \u0437\u0430\u043A\u043E\u043D\u0447\u0438\u0442\u0441\u044F \u043F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u0442\u0435\u0441\u0442
-serverDataReports = \u0414\u0430\u043D\u043D\u044B\u0435 \u0441 \u0421\u0435\u0440\u0432\u0435\u0440\u0430 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044E\u0442 \u0447\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-serverFail Server = \u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0438 \u0434\u0430\u043D\u043D\u044B\u0445
-serverIpModified = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0443\u0441\u0442\u0440\u043E\u0439\u0441\u0442\u0432\u043E \u043F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F \u0441\u0435\u0442\u0435\u0432\u044B\u0445 \u0430\u0434\u0440\u0435\u0441\u043E\u0432 (NAT) \u0438\u0437\u043C\u0435\u043D\u044F\u0435\u0442 IP-\u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-serverIpPreserved = IP \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u044B\u043B\u0438 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u044B \u0431\u0435\u0437 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u0439 \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0443\u0442\u0438
-serverNotRunning = \u0421\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u043D\u0435 \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442: \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u0435 \u043F\u0440\u043E\u0446\u0435\u0441\u0441 web100srv \u043D\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u043D\u043E\u043C \u0441\u0435\u0440\u0432\u0435\u0440\u0435
-serverSays = \u0421\u0435\u0440\u0432\u0435\u0440 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442
-sfwFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D \u041D\u0415 \u041F\u0420\u041E\u0428\u0415\u041B!
-sfwSocketFail = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0444\u0435\u0439\u0441 (socket)
-sfwTest = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D...
-sfwWrongMessage = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u0442\u0435\u0441\u0442 \u043D\u0430 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-showOptions = \u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438
-simpleFirewall = \u041F\u0440\u043E\u0441\u0442\u043E\u0439 \u043C\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043E\u0439 \u044D\u043A\u0440\u0430\u043D
-sleep10m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 10 \u043C\u0438\u043D\u0443\u0442 ...
-sleep1m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u043C\u0438\u043D ...
-sleep30m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 30 \u043C\u0438\u043D\u0443\u0442 ...
-sleep5m = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 5 \u043C\u0438\u043D\u0443\u0442 ...
-sleep12h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 12 \u0447\u0430\u0441\u043E\u0432 ...
-sleep1d = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 1 \u0434\u0435\u043D\u044C ...
-sleep2h = \u0417\u0430\u0434\u0440\u0435\u043C\u0430\u043B \u043D\u0430 2 \u0447\u0430\u0441\u0430 ...
-start = \u0421\u0422\u0410\u0420\u0422
-startingTest = \u041D\u0430\u0447\u0438\u043D\u0430\u0435\u043C \u0442\u0435\u0441\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
-statistics = \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430
-stop = \u0421\u0422\u041E\u041F
-stopped = \u0422\u0435\u0441\u0442\u044B \u0431\u044B\u043B\u0438 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u044B!
-stopping = O\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C\u0441\u044F...
-systemFault = \u0421\u0438\u0441\u0442\u0435\u043C\u043D\u0430\u044F \u043D\u0435\u043F\u043E\u043B\u0430\u0434\u043A\u0430
-test = \u0422\u0415\u0421\u0422
-testsuiteWrongMessage = \u041E\u0431\u043C\u0435\u043D \u0441\u043E\u043E\u0431\u0448\u0435\u043D\u0438\u0439 \u043E \u043D\u0430\u0431\u043E\u0440\u0435 \u0442\u0435\u0441\u0442\u043E\u0432: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-theSlowestLink = \u0421\u0430\u043C\u043E\u0435 \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u0435 \u0437\u0432\u0435\u043D\u043E \u043D\u0430 \u0432\u0441\u0435\u043C \u043F\u0440\u043E\u0442\u044F\u0436\u0435\u043D\u0438\u0438 \u0441\u0435\u0442\u0438
-theoreticalLimit = \u0422\u0435\u043E\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u043F\u0440\u0435\u0434\u0435\u043B \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u043E\u0439 \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0442\u0438
-thisConnIs = \u042D\u0442\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435
-timesPktLoss = \u0440\u0430\u0437 \u0438\u0437-\u0437\u0430 \u043F\u043E\u0442\u0435\u0440\u0438 \u043F\u0430\u043A\u0435\u0442\u043E\u0432
-toMaximizeThroughput = \u043A\u0431\u0430\u0439\u0442 \u0447\u0442\u043E\u0431\u044B \u0443\u0432\u0435\u043B\u0438\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u043F\u0443\u0441\u043A\u043D\u0443\u044E \u0441\u043F\u043E\u0441\u043E\u0431\u043D\u043E\u0441\u0442\u044C \u0441\u0435\u0442\u0438
-troubleReportFrom = \u041E\u0442\u0447\u0435\u0442 \u0418\u0421\u0414 \u043E \u043D\u0430\u0439\u0434\u0435\u043D\u043D\u044B\u0445 \u043F\u0440\u043E\u0431\u043B\u0435\u043C\u0430\u0445 \u043D\u0430
-unableToDetectBottleneck = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0438\u0442\u044C \u0442\u0438\u043F \u0441\u0435\u0442\u0435\u0432\u043E\u0433\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u043D\u0430 \u0441\u0430\u043C\u043E\u043C \u043C\u0435\u0434\u043B\u0435\u043D\u043D\u043E\u043C \u0437\u0432\u0435\u043D\u0435 \u0441\u0435\u0442\u0438.
-unableToObtainIP = \u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 IP \u0430\u0434\u0440\u0435\u0441
-unknownID = \u041D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440(ID) \u0442\u0435\u0441\u0442\u0430
-unknownServer = \u0421\u0435\u0440\u0432\u0435\u0440 \u043D\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043D
-unsupportedClient = \u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F: \u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044D\u0442\u043E\u0433\u043E \u043A\u043E\u043C\u043C\u0430\u043D\u0434\u043D\u043E\u0433\u043E \u043A\u043B\u0438\u0435\u043D\u0442\u0430
-vendor = \u041F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C
-version = \u0412\u0435\u0440\u0441\u0438\u044F
-versionWrongMessage = \u0412\u044B\u044F\u0441\u043D\u0435\u043D\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0418\u0421\u0414: \u041F\u043E\u043B\u0443\u0447\u0435\u043D \u043D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F
-web100Details = WEB100 \u041F\u043E\u0434\u0440\u043E\u0431\u043D\u044B\u0439 \u041E\u0442\u0447\u0435\u0442
-web100KernelVar = WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435 \u044F\u0434\u0440\u0430
-web100Stats = WEB100 \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043A\u0430 \u0432\u043A\u043B\u044E\u0447\u0435\u043D\u0430
-web100Var = WEB100 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
-web100rtt = WEB100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u0443\u0434\u0430-\u043E\u0431\u0440\u0430\u0442\u043D\u043E\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043A\u0435 (RTT)
-web100tcpOpts = WEB100 \u0441\u043E\u043E\u0431\u0449\u0430\u0435\u0442 \u043E \u0442\u043E\u043C \u0447\u0442\u043E \u0432 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u0435 \u043E\u0431\u043C\u0435\u043D\u0430 TCP \u0431\u044B\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u043D\u044B \u0434\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u0438:
-willImprove = \u043F\u043E\u0437\u0432\u043E\u043B\u0438\u0442 \u043F\u043E\u0432\u044B\u0441\u0438\u0442\u044C \u043F\u0440\u043E\u0438\u0437\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
-workstation = \u0420\u0430\u0431\u043E\u0447\u0430\u044F \u0421\u0442\u0430\u043D\u0446\u0438\u044F
-your = \u0412\u0430\u0448
-yourPcHas = \u0423 \u0412\u0430\u0448\u0435\u0433\u043E \u041F\u041A/\u0420\u0430\u0431\u043E\u0447\u0435\u0439 \u0421\u0442\u0430\u043D\u0446\u0438\u0438 \u0435\u0441\u0442\u044C
-connectingTo = \u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u0441\u044F \u043A
-toRunTest = \u043F\u0440\u043E\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u0441\u0442
=======================================
--- /branches/android/Applet/Tcpbw100.java Tue Jun 8 07:17:45 2010
+++ /branches/android/Applet/Tcpbw100.java Wed Jun 9 15:23:05 2010
@@ -59,6 +59,9 @@
The Software was developed at least in part by the University of Chicago,
as Operator of Argonne National Laboratory (http://miranda.ctd.anl.gov:7123/).
*/
+
+import net.measurementlab.ndt.NdtTests;
+import net.measurementlab.ndt.UiServices;
import java.io.*;
import java.net.*;
import java.net.Socket;
@@ -71,6 +74,7 @@
import java.util.*;
import java.text.*;
import java.lang.*;
+import java.lang.reflect.*;
import javax.swing.JLabel;
import javax.swing.JApplet;
import javax.swing.JFrame;
@@ -98,36 +102,8 @@
public class Tcpbw100 extends JApplet implements ActionListener
{
- private static final String VERSION = "3.6.3";
- private static final byte TEST_MID = (1 << 0);
- private static final byte TEST_C2S = (1 << 1);
- private static final byte TEST_S2C = (1 << 2);
- private static final byte TEST_SFW = (1 << 3);
- private static final byte TEST_STATUS = (1 << 4);
-
- /* we really should do some clean-up in this java code... maybe later ;) */
- private static final byte COMM_FAILURE = 0;
- private static final byte SRV_QUEUE = 1;
- private static final byte MSG_LOGIN = 2;
- private static final byte TEST_PREPARE = 3;
- private static final byte TEST_START = 4;
- private static final byte TEST_MSG = 5;
- private static final byte TEST_FINALIZE = 6;
- private static final byte MSG_ERROR = 7;
- private static final byte MSG_RESULTS = 8;
- private static final byte MSG_LOGOUT = 9;
- private static final byte MSG_WAITING = 10;
-
- private static final int SFW_NOTTESTED = 0;
- private static final int SFW_NOFIREWALL = 1;
- private static final int SFW_UNKNOWN = 2;
- private static final int SFW_POSSIBLE = 3;
-
- private static final double VIEW_DIFF = 0.1;
-
JTextArea diagnosis, statistics;
MyTextPane results;
- String inresult, outresult, errmsg;
JButton startTest;
JButton disMiss, disMiss2;
JButton copy, copy2;
@@ -139,31 +115,19 @@
JSpinner numOfTests = new JSpinner();
String[] delays = { "immediate", "1min","5mins","10mins","30mins","2hours","12hours","1day" };
JComboBox delay;
-
- boolean Randomize, failed, cancopy;
- URL location;
- clsFrame f, ff, optionsFrame;
- String s;
- double t;
- int ECNEnabled, NagleEnabled, MSSSent, MSSRcvd;
- int SACKEnabled, TimestampsEnabled, WinScaleRcvd, WinScaleSent;
- int FastRetran, AckPktsOut, SmoothedRTT, CurrentCwnd, MaxCwnd;
- int SndLimTimeRwin, SndLimTimeCwnd, SndLimTimeSender;
- int SndLimTransRwin, SndLimTransCwnd, SndLimTransSender, MaxSsthresh;
- int SumRTT, CountRTT, CurrentMSS, Timeouts, PktsRetrans;
- int SACKsRcvd, DupAcksIn, MaxRwinRcvd, MaxRwinSent;
- int DataPktsOut, Rcvbuf, Sndbuf, AckPktsIn, DataBytesOut;
- int PktsOut, CongestionSignals, RcvWinScale;
- int pkts, lth=8192, CurrentRTO;
- int c2sData, c2sAck, s2cData, s2cAck;
+ String host;
+
// added for mailto url
protected URL targetURL;
private String TARGET1 = "U";
private String TARGET2 = "H";
String emailText;
- double s2cspd, c2sspd, sc2sspd, ss2cspd;
- int ssndqueue;
- double sbytes;
+
+ clsFrame f, ff, optionsFrame;
+
+ boolean isApplication = false;
+ boolean testInProgress = false;
+ boolean cancopy;
/*************************************************************************
* JavaScript access API extension
@@ -451,20 +415,6 @@
//private static String country="NO";
/***/
- int half_duplex, congestion, bad_cable, mismatch;
- double mylink;
- double loss, estimate, avgrtt, spd, waitsec, timesec, rttsec;
- double order, rwintime, sendtime, cwndtime, rwin, swin, cwin;
- double aspd;
-
- boolean isApplication = false;
- boolean testInProgress = false;
- String host = null;
- String tmpstr, tmpstr2;
- byte tests = TEST_MID | TEST_C2S | TEST_S2C | TEST_SFW | TEST_STATUS;
- int c2sResult = SFW_NOTTESTED;
- int s2cResult = SFW_NOTTESTED;
-
public void showStatus(String msg)
{
if (!isApplication) {
@@ -495,11 +445,9 @@
getContentPane().setLayout(new BorderLayout());
showStatus(messages.getString("ready"));
- failed = false ;
- Randomize = false;
cancopy = false;
results = new MyTextPane();
- results.append("TCP/Web100 Network Diagnostic Tool v" + VERSION + "\n");
+ results.append("TCP/Web100 Network Diagnostic Tool v" + NdtTests.VERSION + "\n");
results.setEditable(false);
getContentPane().add(new JScrollPane(results));
results.append(messages.getString("clickStart") + "\n");
@@ -555,6 +503,26 @@
}
delay.setSelectedIndex(0);
+ if (!isApplication) {
+
+ /*************************************************************************
+ * Enable NDT to test against a web100srv instance on a remote server.
+ * Instead of using the getCodeBase().getHost() value for the testing server,
+ * which assumes this applet is being served from the web100srv server,
+ * use a parameter provided in the APPLET tag.
+ * Note that for this to work the applet must be signed because you are
+ * potentially accessing a server outside the source domain.
+ */
+ host = getParameter("testingServer");
+ /************************************************************************/
+ /* fall back to the old behaviour if the APPLET tag is not set */
+ if (host == null) {
+ host = getCodeBase().getHost();
+ }
+
+ pub_host = host;
+ }
+
//Autorun functionality
isAutoRun = getParameter("autoRun");
if ((isAutoRun != null) && isAutoRun.equals("true")) {
@@ -652,8 +620,10 @@
}
}
- class TestWorker implements Runnable
- {
+ class TestWorker implements Runnable, UiServices
+ {
+ StatusPanel sPanel;
+
public void run()
{
if (!testInProgress) {
@@ -668,85 +638,84 @@
mailTo.setEnabled(false);
options.setEnabled(false);
numOfTests.setEnabled(false);
- StatusPanel sPanel = new StatusPanel(testsNum);
+ sPanel = new StatusPanel(testsNum);
getContentPane().add(BorderLayout.NORTH, sPanel);
getContentPane().validate();
getContentPane().repaint();
- try {
- while (true) {
- if (sPanel.wantToStop()) {
- break;
- }
- if (testsNum == 0) {
- results.append("\n** " + messages.getString("startingTest") + " " + testNo + " **\n");
- }
- else {
- results.append("\n** " + messages.getString("startingTest") + " " + testNo + " " + messages.getString("of") + " " + testsNum + " **\n");
- }
- dottcp(sPanel);
- if (testNo == testsNum) {
- break;
- }
- if (sPanel.wantToStop()) {
- break;
- }
- sPanel.setText("");
- sPanel.endTest();
- testNo += 1;
- deTails.setEnabled(true);
- sTatistics.setEnabled(true);
- mailTo.setEnabled(true);
- options.setEnabled(true);
- statistics.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
- diagnosis.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
- try {
- switch (delay.getSelectedIndex()) {
- case 1:
- results.append("\n** " + messages.getString("sleep1m") + " **\n");
- Thread.sleep(1000 * 60);
- break;
- case 2:
- results.append("\n** " + messages.getString("sleep5m") + " **\n");
- Thread.sleep(1000 * 60 * 5);
- break;
- case 3:
- results.append("\n** " + messages.getString("sleep10m") + " **\n");
- Thread.sleep(1000 * 60 * 10);
- break;
- case 4:
- results.append("\n** " + messages.getString("sleep30m") + " **\n");
- Thread.sleep(1000 * 60 * 30);
- break;
- case 5:
- results.append("\n** " + messages.getString("sleep2h") + " **\n");
- Thread.sleep(1000 * 60 * 120);
- break;
- case 6:
- results.append("\n** " + messages.getString("sleep12h") + " **\n");
- Thread.sleep(1000 * 60 * 720);
- break;
- case 7:
- results.append("\n** " + messages.getString("sleep1d") + " **\n");
- Thread.sleep(1000 * 60 * 1440);
- break;
- }
- }
- catch (InterruptedException e) {
- // do nothing.
+ if (preferIPv6.isSelected()) {
+ try {
+ System.setProperty("java.net.preferIPv6Addresses", "true");
+ }
+ catch (SecurityException e) {
+ System.err.println("Couldn't set system property. Check your security settings.");
+ }
+ }
+ preferIPv6.setEnabled(false);
+ // TODO: detect network type
+ NdtTests tests = new NdtTests(host, this, "unknown");
+ while (true) {
+ if (sPanel.wantToStop()) {
+ break;
+ }
+ if (testsNum == 0) {
+ results.append("\n** " + messages.getString("startingTest") + " " + testNo + " **\n");
+ }
+ else {
+ results.append("\n** " + messages.getString("startingTest") + " " + testNo + " " + messages.getString("of") + " " + testsNum + " **\n");
+ }
+ tests.run();
+ if (testNo == testsNum) {
+ break;
+ }
+ if (sPanel.wantToStop()) {
+ break;
+ }
+ emailText = tests.getEmailText();
+ sPanel.setText("");
+ sPanel.endTest();
+ testNo += 1;
+ deTails.setEnabled(true);
+ sTatistics.setEnabled(true);
+ mailTo.setEnabled(true);
+ options.setEnabled(true);
+ statistics.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
+ diagnosis.append("\n** " + messages.getString("test") + " " + testNo + " **\n");
+ try {
+ switch (delay.getSelectedIndex()) {
+ case 1:
+ results.append("\n** " + messages.getString("sleep1m") + " **\n");
+ Thread.sleep(1000 * 60);
+ break;
+ case 2:
+ results.append("\n** " + messages.getString("sleep5m") + " **\n");
+ Thread.sleep(1000 * 60 * 5);
+ break;
+ case 3:
+ results.append("\n** " + messages.getString("sleep10m") + " **\n");
+ Thread.sleep(1000 * 60 * 10);
+ break;
+ case 4:
+ results.append("\n** " + messages.getString("sleep30m") + " **\n");
+ Thread.sleep(1000 * 60 * 30);
+ break;
+ case 5:
+ results.append("\n** " + messages.getString("sleep2h") + " **\n");
+ Thread.sleep(1000 * 60 * 120);
+ break;
+ case 6:
+ results.append("\n** " + messages.getString("sleep12h") + " **\n");
+ Thread.sleep(1000 * 60 * 720);
+ break;
+ case 7:
+ results.append("\n** " + messages.getString("sleep1d") + " **\n");
+ Thread.sleep(1000 * 60 * 1440);
+ break;
}
}
- } catch(IOException e) {
- e.printStackTrace();
- failed=true;
- errmsg = messages.getString("serverBusy30s") + "\n";
- }
-
- if (failed) {
- results.append(errmsg);
-
- pub_isReady = "failed";
- pub_errmsg = errmsg;
+ catch (InterruptedException e) {
+ // do nothing.
+ }
}
deTails.setEnabled(true);
@@ -763,965 +732,119 @@
getContentPane().repaint();
}
}
- }
-
- synchronized public void runtest() {
- new Thread(new TestWorker()).start();
- }
-
- class Message {
- byte type;
- byte[] body;
- }
-
- class Protocol {
- private InputStream _ctlin;
- private OutputStream _ctlout;
-
- public Protocol(Socket ctlSocket) throws IOException
- {
- _ctlin = ctlSocket.getInputStream();
- _ctlout = ctlSocket.getOutputStream();
- }
-
- public void send_msg(byte type, byte toSend) throws IOException
- {
- byte[] tab = new byte[] { toSend };
- send_msg(type, tab);
- }
-
- public void send_msg(byte type, byte[] tab) throws IOException
- {
- byte[] header = new byte[3];
- header[0] = type;
- header[1] = (byte) (tab.length >> 8);
- header[2] = (byte) tab.length;
-
- _ctlout.write(header);
- _ctlout.write(tab);
- }
-
- public int readn(Message msg, int amount) throws IOException
- {
- int read = 0;
- int tmp;
- msg.body = new byte[amount];
- while (read != amount) {
- tmp = _ctlin.read(msg.body, read, amount - read);
- if (tmp <= 0) {
- return read;
- }
- read += tmp;
- }
- return read;
- }
-
- public int recv_msg(Message msg) throws IOException
- {
- int length;
- if (readn(msg, 3) != 3) {
- return 1;
- }
- msg.type = msg.body[0];
- length = ((int) msg.body[1] & 0xFF) << 8;
- length += (int) msg.body[2] & 0xFF;
- if (readn(msg, length) != length) {
- return 3;
- }
- return 0;
+
+ // Implementation of UiServices
+
+ public void appendString(String str, int viewId) {
+ switch (viewId) {
+ case UiServices.MAIN_VIEW:
+ results.append(str);
+ break;
+ case UiServices.STAT_VIEW:
+ statistics.append(str);
+ break;
+ case UiServices.DIAG_VIEW:
+ diagnosis.append(str);
+ break;
+ default:
+ // Do nothing
+ }
}
- public void close()
- {
- try {
- _ctlin.close();
- _ctlout.close();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- public boolean test_mid(Protocol ctl) throws IOException
- {
- byte buff[] = new byte[8192];
- Message msg = new Message();
- if ((tests & TEST_MID) == TEST_MID) {
- /* now look for middleboxes (firewalls, NATs, and other boxes that
- * muck with TCP's end-to-end priciples
- */
- showStatus(messages.getString("middleboxTest"));
- results.append(messages.getString("checkingMiddleboxes") + " ");
- statistics.append(messages.getString("checkingMiddleboxes") + " ");
- emailText = messages.getString("checkingMiddleboxes") + " ";
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_PREPARE) {
- errmsg = messages.getString("mboxWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- int midport = Integer.parseInt(new String(msg.body));
-
- Socket in2Socket = null;
- try {
- in2Socket = new Socket(host, midport);
- } catch (UnknownHostException e) {
- System.err.println("Don't know about host: " + host);
- errmsg = messages.getString("unknownServer") + "\n" ;
- return true;
- } catch (IOException e) {
- System.err.println("Couldn't perform middlebox testing to: " + host);
- errmsg = messages.getString("middleboxFail") + "\n" ;
- return true;
- }
-
- InputStream srvin2 = in2Socket.getInputStream();
- OutputStream srvout2 = in2Socket.getOutputStream();
-
- int largewin = 128*1024;
-
- in2Socket.setSoTimeout(6500);
- int bytes = 0;
- int inlth;
- t = System.currentTimeMillis();
- pub_TimeStamp = new Date();
-
- try {
- while ((inlth=srvin2.read(buff,0,buff.length)) > 0) {
- bytes += inlth;
- if ((System.currentTimeMillis() - t) > 5500)
- break;
- }
- }
- catch (IOException e) {}
-
- t = System.currentTimeMillis() - t;
- System.out.println(bytes + " bytes " + (8.0 * bytes)/t + " kb/s " + t/1000 + " secs");
- s2cspd = ((8.0 * bytes) / 1000) / t;
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_MSG) {
- errmsg = messages.getString("mboxWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- tmpstr2 = new String(msg.body);
-
- String tmpstr4 = Double.toString(s2cspd*1000);
- System.out.println("Sending '" + tmpstr4 + "' back to server");
- ctl.send_msg(TEST_MSG, tmpstr4.getBytes());
-
- try {
- tmpstr2 += in2Socket.getInetAddress() + ";";
- } catch (SecurityException e) {
- System.err.println("Unable to obtain Servers IP addresses: using " + host);
- errmsg = "getInetAddress() called failed\n" ;
- tmpstr2 += host + ";";
- results.append(messages.getString("lookupError") + "\n");
- }
-
- System.err.println("calling in2Socket.getLocalAddress()");
- try {
- tmpstr2 += in2Socket.getLocalAddress() + ";";
- } catch (SecurityException e) {
- System.err.println("Unable to obtain local IP address: using 127.0.0.1");
- errmsg = "getLocalAddress() call failed\n" ;
- tmpstr2 += "127.0.0.1;";
- }
-
- srvin2.close();
- srvout2.close();
- in2Socket.close();
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_FINALIZE) {
- errmsg = messages.getString("mboxWrongMessage");
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- results.append(messages.getString("done") + "\n");
- statistics.append(messages.getString("done") + "\n");
- emailText += messages.getString("done") + "\n%0A";
- }
- return false;
- }
-
- public boolean test_sfw(Protocol ctl) throws IOException
- {
- Message msg = new Message();
- if ((tests & TEST_SFW) == TEST_SFW) {
- showStatus(messages.getString("sfwTest"));
- results.append(messages.getString("checkingFirewalls") + " ");
- statistics.append(messages.getString("checkingFirewalls") + " ");
- emailText = messages.getString("checkingFirewalls") + " ";
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_PREPARE) {
- errmsg = messages.getString("sfwWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
-
- String message = new String(msg.body);
-
- int srvPort, testTime;
- try {
- int k = message.indexOf(" ");
- srvPort = Integer.parseInt(message.substring(0,k));
- testTime = Integer.parseInt(message.substring(k+1));
- }
- catch (Exception e) {
- errmsg = messages.getString("sfwWrongMessage") + "\n";
- return true;
- }
-
- System.out.println("SFW: port=" + srvPort);
- System.out.println("SFW: testTime=" + testTime);
-
- ServerSocket srvSocket;
- try {
- SecurityManager security = System.getSecurityManager();
- if (security != null) {
- System.out.println("Asking security manager for listen permissions...");
- security.checkListen(0);
- }
- srvSocket = new ServerSocket(0);
- }
- catch (Exception e) {
- e.printStackTrace();
- errmsg = messages.getString("sfwSocketFail") + "\n";
- return true;
- }
-
- System.out.println("SFW: oport=" + srvSocket.getLocalPort());
- ctl.send_msg(TEST_MSG, Integer.toString(srvSocket.getLocalPort()).getBytes());
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_START) {
- errmsg = messages.getString("sfwWrongMessage");
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
-
- OsfwWorker osfwTest = new OsfwWorker(srvSocket, testTime);
- new Thread(osfwTest).start();
-
- Socket sfwSocket = new Socket();
- try {
- sfwSocket.connect(new InetSocketAddress(host, srvPort), testTime * 1000);
-
- Protocol sfwCtl = new Protocol(sfwSocket);
- sfwCtl.send_msg(TEST_MSG, new String("Simple firewall test").getBytes());
- }
- catch (Exception e) {
- e.printStackTrace();
- }
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_MSG) {
- errmsg = messages.getString("sfwWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- c2sResult = Integer.parseInt(new String(msg.body));
-
- osfwTest.finalize();
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_FINALIZE) {
- errmsg = messages.getString("sfwWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- results.append(messages.getString("done") + "\n");
- statistics.append(messages.getString("done") + "\n");
- emailText += messages.getString("done") + "\n%0A";
- }
- return false;
- }
-
- public boolean test_c2s(Protocol ctl) throws IOException
- {
- // byte buff2[] = new byte[8192];
- byte buff2[] = new byte[64*1024];
- Message msg = new Message();
- if ((tests & TEST_C2S) == TEST_C2S) {
- showStatus(messages.getString("outboundTest"));
- results.append(messages.getString("runningOutboundTest") + " ");
- statistics.append(messages.getString("runningOutboundTest") + " ");
- emailText += messages.getString("runningOutboundTest") + " ";
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_PREPARE) {
- errmsg = messages.getString("outboundWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- int c2sport = Integer.parseInt(new String(msg.body));
-
- Socket outSocket = null;
- try {
- outSocket = new Socket(host, c2sport);
- } catch (UnknownHostException e) {
- System.err.println("Don't know about host: " + host);
- errmsg = messages.getString("unknownServer") + "\n" ;
- return true;
- } catch (IOException e) {
- System.err.println("Couldn't get 2nd connection to: " + host);
- errmsg = messages.getString("serverBusy15s") + "\n";
- return true;
- }
-
- // Get server IP address from the outSocket.
- pub_host =
outSocket.getInetAddress().getHostAddress().toString();
-
-
- OutputStream out = outSocket.getOutputStream();
-
- // wait here for signal from server application
- // This signal tells the client to start pumping out data
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_START) {
- errmsg = messages.getString("outboundWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
-
- Random rng = new Random();
- byte c = '0';
- int i;
- for (i=0; i<lth; i++) {
- if (c == 'z')
- c = '0';
- buff2[i] = c++;
- }
- System.err.println("Send buffer size =" + i);
- outSocket.setSoTimeout(15000);
- pkts = 0;
- t = System.currentTimeMillis();
- double stop_time = t + 10000; // ten seconds
- do {
- // if (Randomize) rng.nextBytes(buff2);
- try {
- out.write(buff2, 0, buff2.length);
- }
- catch (SocketException e) {
- System.out.println(e);
- break;
- }
- pkts++;
- } while (System.currentTimeMillis() < stop_time);
-
- t = System.currentTimeMillis() - t;
- if (t == 0) {
- t = 1;
- }
- out.close();
- outSocket.close();
- System.out.println((8.0 * pkts * lth) / t + " kb/s outbound");
- c2sspd = ((8.0 * pkts * lth) / 1000) / t;
- /* receive the c2sspd from the server */
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_MSG) {
- errmsg = messages.getString("outboundWrongMessage");
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- String tmpstr3 = new String(msg.body);
- sc2sspd = Double.parseDouble(tmpstr3) / 1000.0;
-
- if (sc2sspd < 1.0) {
- results.append(prtdbl(sc2sspd*1000) + "kb/s\n");
- statistics.append(prtdbl(sc2sspd*1000) + "kb/s\n");
- emailText += prtdbl(sc2sspd*1000) + "kb/s\n%0A";
- }
- else {
- results.append(prtdbl(sc2sspd) + "Mb/s\n");
- statistics.append(prtdbl(sc2sspd) + "Mb/s\n");
- emailText += prtdbl(sc2sspd) + "Mb/s\n%0A";
- }
-
- // Expose upload speed to JavaScript clients
- pub_c2sspd = sc2sspd;
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_FINALIZE) {
- errmsg = messages.getString("outboundWrongMessage");
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- }
- return false;
- }
-
- public boolean test_s2c(Protocol ctl, Socket ctlSocket) throws IOException
- {
- byte buff[] = new byte[8192];
- Message msg = new Message();
- if ((tests & TEST_S2C) == TEST_S2C) {
- showStatus(messages.getString("inboundTest"));
- results.append(messages.getString("runningInboundTest") + " ");
- statistics.append(messages.getString("runningInboundTest") + " ");
- emailText += messages.getString("runningInboundTest") + " ";
-
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_PREPARE) {
- errmsg = messages.getString("inboundWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- int s2cport = Integer.parseInt(new String(msg.body));
-
- Socket inSocket;
- try {
- inSocket = new Socket(host, s2cport);
- }
- catch (UnknownHostException e) {
- System.err.println("Don't know about host: " + host);
- errmsg = "unknown server\n" ;
- return true;
- }
- catch (IOException e) {
- System.err.println("Couldn't get 3rd connection to: " + host);
- errmsg = "Server Failed while receiving data\n" ;
- return true;
- }
-
- InputStream srvin = inSocket.getInputStream();
- int bytes = 0;
- int inlth;
-
- // wait here for signal from server application
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("unknownServer") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_START) {
- errmsg = messages.getString("serverFail") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
-
- inSocket.setSoTimeout(15000);
- t = System.currentTimeMillis();
-
- try {
- while ((inlth=srvin.read(buff,0,buff.length)) > 0) {
- bytes += inlth;
- if ((System.currentTimeMillis() - t) > 14500)
- break;
- }
- }
- catch (IOException e) {}
-
- t = System.currentTimeMillis() - t;
- System.out.println(bytes + " bytes " + (8.0 * bytes)/t + " kb/s " + t/1000 + " secs");
- s2cspd = ((8.0 * bytes) / 1000) / t;
-
- /* receive the s2cspd from the server */
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type != TEST_MSG) {
- errmsg = messages.getString("inboundWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- try {
- String tmpstr3 = new String(msg.body);
- int k1 = tmpstr3.indexOf(" ");
- int k2 = tmpstr3.substring(k1+1).indexOf(" ");
- ss2cspd = Double.parseDouble(tmpstr3.substring(0, k1)) / 1000.0;
- ssndqueue = Integer.parseInt(tmpstr3.substring(k1+1).substring(0, k2));
- sbytes = Double.parseDouble(tmpstr3.substring(k1+1).substring(k2+1));
- }
- catch (Exception e) {
- e.printStackTrace();
- errmsg = messages.getString("inboundWrongMessage") + "\n";
- return true;
- }
-
- if (s2cspd < 1.0) {
- results.append(prtdbl(s2cspd*1000) + "kb/s\n");
- statistics.append(prtdbl(s2cspd*1000) + "kb/s\n");
- emailText += prtdbl(s2cspd*1000) + "kb/s\n%0A";
- } else {
- results.append(prtdbl(s2cspd) + "Mb/s\n");
- statistics.append(prtdbl(s2cspd) + "Mb/s\n");
- emailText += prtdbl(s2cspd) + "Mb/s\n%0A";
- }
-
-
- // Expose download speed to JavaScript clients
- pub_s2cspd = s2cspd;
-
- srvin.close();
- inSocket.close();
-
- buff = Double.toString(s2cspd*1000).getBytes();
- String tmpstr4 = new String(buff, 0, buff.length);
- System.out.println("Sending '" + tmpstr4 + "' back to server");
- ctl.send_msg(TEST_MSG, buff);
-
- /* get web100 variables from server */
- tmpstr = "";
- int i = 0;
-
- // Try setting a 5 second timer here to break out if the read fails.
- ctlSocket.setSoTimeout(5000);
- try {
- for (;;) {
- if (ctl.recv_msg(msg) != 0) {
- errmsg = messages.getString("protocolError") + Integer.parseInt(new String(msg.body), 16) + " instead\n";
- return true;
- }
- if (msg.type == TEST_FINALIZE) {
- break;
- }
- if (msg.type != TEST_MSG) {
- errmsg = messages.getString("inboundWrongMessage") + "\n";
- if (msg.type == MSG_ERROR) {
- errmsg += "ERROR MSG: " + Integer.parseInt(new String(msg.body), 16) + "\n";
- }
- return true;
- }
- tmpstr += new String(msg.body);
- i++;
- }
- } catch (IOException e) {}
- ctlSocket.setSoTimeout(0);
- }
- return false;
- }
-
- public void dottcp(StatusPanel sPanel) throws IOException {
- Socket ctlSocket = null;
- if (!isApplication) {
-
- /*************************************************************************
- * Enable NDT to test against a web100srv instance on a remote server.
- * Instead of using the getCodeBase().getHost() value for the testing server,
- * which assumes this applet is being served from the web100srv server,
- * use a parameter provided in the APPLET tag.
- * Note that for this to work the applet must be signed because you are
- * potentially accessing a server outside the source domain.
- */
- host = getParameter("testingServer");
- /************************************************************************/
- /* fall back to the old behaviour if the APPLET tag is not set */
- if (host == null) {
- host = getCodeBase().getHost();
- }
-
- pub_host = host;
- }
-
-
-
-
- int ctlport = 3001;
- double wait2;
- int sbuf, rbuf;
- int i, wait, swait=0;
-
- failed = false;
-
- try {
-
- // RAC Debug message
- results.append(messages.getString("connectingTo") + " '" + host + "' [" + InetAddress.getByName(host) + "] " + messages.getString("toRunTest") + "\n");
-
- if (preferIPv6.isSelected()) {
- try {
- System.setProperty("java.net.preferIPv6Addresses", "true");
- }
- catch (SecurityException e) {
- System.err.println("Couldn't set system property. Check your security settings.");
- }
- }
- preferIPv6.setEnabled(false);
- ctlSocket = new Socket(host, ctlport);
- } catch (UnknownHostException e) {
- System.err.println("Don't know about host: " + host);
- errmsg = messages.getString("unknownServer") + "\n" ;
- failed = true;
- return;
- } catch (IOException e) {
***The diff for this file has been truncated for email.***
- [ndt] r363 committed - Initial checkin of Android port..., ndt, 06/09/2010
Archive powered by MHonArc 2.6.16.