bertrandmartel / speed-test-lib

:cloud: JSpeedTest : speed test client library for Java/Android
MIT License
381 stars 119 forks source link

Connection error (Permisssion denied) #16

Closed mnaranjo closed 7 years ago

mnaranjo commented 7 years ago

Hi,

I'm testing your code to use in my own Android application and I have a problem. Always cant connect with speedtest servers, onDownloadError get the same error: CONNECTION_ERROR, socket failed: EACCES (Permission denied).

My code is very simple:

`

/**
 * socket timeout used in ms.
 */
private final static int SOCKET_TIMEOUT = 5000;

/**
 * speed examples server host name.
 */
private final static String SPEED_TEST_SERVER_HOST = "2.testdebit.info";

/**
 * spedd examples server uri.
 */
private final static String SPEED_TEST_SERVER_URI_DL = "/fichiers/1Mo.dat";

/**
 * speed examples server port.
 */
private final static int SPEED_TEST_SERVER_PORT = 80;

private SpeedTestSocket speedTestSocket = null;
private Button btnStartTest;
private TextView txtDownValue;
private TextView txtUpValue;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    speedTestSocket = new SpeedTestSocket();
    //set timeout for download
    speedTestSocket.setSocketTimeout(SOCKET_TIMEOUT);

    btnStartTest = (Button) findViewById(R.id.buttonStartTest);
    txtDownValue = (TextView) findViewById(R.id.downValue);
    txtUpValue = (TextView) findViewById(R.id.upValue);

    btnStartTest.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) {
             speedTestSocket.startDownload(SPEED_TEST_SERVER_HOST, SPEED_TEST_SERVER_PORT, SPEED_TEST_SERVER_URI_DL);
         }
    });

    speedTestSocket.addSpeedTestListener(new ISpeedTestListener() {
        @Override
        public void onDownloadFinished(SpeedTestReport report) {
            // called when download is finished
            Log.i("MainActivity SpeedTest", "[DL FINISHED] rate in octet/s : " + report.getTransferRateOctet());
            Log.i("MainActivity SpeedTest", "[DL FINISHED] rate in bit/s   : " + report.getTransferRateBit());
            txtDownValue.setText(report.getTransferRateBit() + " bps");
            //speedTestSocket.startUpload("2.testdebit.info", "/", 1000000);
        }

        @Override
        public void onDownloadError(SpeedTestError speedTestError, String errorMessage) {
            // called when a download error occur
            Log.i("MainActivity SpeedTest", "Error: " + speedTestError.toString() + "\n" + errorMessage.toString());
        }

        @Override
        public void onUploadFinished(SpeedTestReport report) {
            // called when an upload is finished
            Log.i("MainActivity SpeedTest", "[UL FINISHED] rate in octet/s : " + report.getTransferRateOctet());
            Log.i("MainActivity SpeedTest", "[UL FINISHED] rate in bit/s   : " + report.getTransferRateBit());
            txtUpValue.setText(report.getTransferRateBit() + " bps");
        }

        @Override
        public void onUploadError(SpeedTestError speedTestError, String errorMessage) {
            // called when an upload error occur
        }

        @Override
        public void onDownloadProgress(float percent, SpeedTestReport report) {
            // called to notify download progress
            Log.i("MainActivity SpeedTest", "[DL PROGRESS] progress : " + percent + "%");
            Log.i("MainActivity SpeedTest", "[DL PROGRESS] rate in octet/s : " + report.getTransferRateOctet());
            Log.i("MainActivity SpeedTest", "[DL PROGRESS] rate in bit/s   : " + report.getTransferRateBit());
        }

        @Override
        public void onUploadProgress(float percent, SpeedTestReport report) {
            // called to notify upload progress
            Log.i("MainActivity SpeedTest", "[UL PROGRESS] progress : " + percent + "%");
            Log.i("MainActivity SpeedTest", "[UL PROGRESS] rate in octet/s : " + report.getTransferRateOctet());
            Log.i("MainActivity SpeedTest", "[UL PROGRESS] rate in bit/s   : " + report.getTransferRateBit());
        }

        @Override
        public void onInterruption() {
            // triggered when forceStopTask is called
        }
    });
}

`

Am I forgetting anything in my code? thanks!!

bertrandmartel commented 7 years ago

Hi, did you add Internet permission ?

<uses-permission android:name="android.permission.INTERNET" />
mnaranjo commented 7 years ago

Ouch! Noob mistake :'(

Thanks!