小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Android TCP客戶端

 印度阿三17 2019-09-03

我目前正在開發(fā)Android中的tcp客戶端.
我想將我的Android設(shè)備連接到計(jì)算機(jī)上的tcp服務(wù)器,并每2秒接收一次數(shù)據(jù).問題是由于我在tcp客戶端中實(shí)現(xiàn)的while循環(huán),我正在關(guān)閉我的應(yīng)用程序.
我嘗試以不同的方式編寫將使tcp客戶端檢查服務(wù)器套接字的循環(huán),但沒有成功.如何制作一個(gè)循環(huán)來(lái)檢查服務(wù)器套接字而不關(guān)閉力?

這是我目前正在使用的代碼:

    public class Connection implements Runnable {
    @Override
    public void run() {         
        try {                    
            sk=new Socket(server,port);
            viewsurface.setText("connected");       
            flag = true;
        } catch (UnknownHostException e) {      
            viewsurface.setText("failed 1 socket");
            flag = false;
        } catch (IOException e) {                   
            viewsurface.setText("failed 2 socket");
            flag = false;
        }

        while (flag == true){               
            try {
                checkin = sk.getInputStream();
                checkint = checkin.available();

                if (checkint > 0){
                    try {
                        BufferedReader in = new BufferedReader(new InputStreamReader(sk.getInputStream()));
                        received = in.readLine();
                        viewsurface.setText(received);

                    } catch (IOException e) {
                        viewsurface.setText("failed to receive");
                    }
                }

            Thread.sleep(2000);
            } catch (IOException e) {
                viewsurface.setText("checkin failed");

            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
}

}

解決方法:

在任何人提供合適的幫助之前,你需要粘貼你所獲得的異常以使力量關(guān)閉.

但有些建議可能會(huì)解決問題.

>最有可能是問題,viewText.setText只能從UI線程調(diào)用.有很多方法可以解決這個(gè)問題.您可以使用AsyncTask,或者如果您有一個(gè)Activity引用,則可以使用runOnUIThread并傳入一個(gè)調(diào)用setText的runnable.
>移動(dòng)checkin = sk.getInputStream();在循環(huán)之前.沒有理由在循環(huán)中的每個(gè)循環(huán)中獲得strem.
>不要在循環(huán)中的每個(gè)循環(huán)中創(chuàng)建BufferedReader.在循環(huán)之前移動(dòng)它
> .sleep(2000)并不能完全保證2秒.

我有一些代碼格式問題所以我道歉.

 private class DownloadFilesTask extends AsyncTask<Void, String, Void> {
     protected Long doInBackground(Void... nothing) {
         try {                    
            sk=new Socket(server,port);
        publishProgress("connected");       
            flag = true;
    } catch (UnknownHostException e) {      
        publishProgress("failed 1 socket");
        flag = false;
    } catch (IOException e) {                   
        publishProgress("failed 2 socket");
        flag = false;
    }

    while (flag == true){               
        try {
            checkin = sk.getInputStream();
            checkint = checkin.available();

            if (checkint > 0){
                try {
                    BufferedReader in = new BufferedReader(new InputStreamReader(sk.getInputStream()));
                    received = in.readLine();
                    publishProgress(received);

                } catch (IOException e) {
                    publishProgress("failed to receive");
                }
            }

        Thread.sleep(2000);
        } catch (IOException e) {
            updateProgress(

        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    return;
 }

 protected void onProgressUpdate(String... progress) {
    viewsurface.setText(progress[0]);
 }

 protected void onPostExecute(Void result) {
     //nothing
 }

 }
來(lái)源:https://www./content-4-437851.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多