Android TCP连接:accept()无效

时间:2017-10-27 05:28:58

标签: android sockets tcp

我正在使用TCP连接构建Android应用。下面是我的TCP服务器代码。当我测试时,它没有任何错误,但应用程序有错误

  

“遗憾的是应用程序停止了”。

当我检查代码时,它会停留在:“

s=serverClient.accept();

这是我的代码:

package com.example.truong.total;

import android.util.Log;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Created by duy on 26/10/2017.
 */

public class TCPServer {
    int port;
    String result;
    ServerSocket serverClient;
    TextView tv5;
    MainActivity at;
    public TCPServer(int newPort,MainActivity at) {
        this.port=newPort;
        this.at=at;
        try{
            serverClient=new ServerSocket(port);
        }catch(IOException e) {
            e.printStackTrace();
        }
        Log.d("constructornethanglol","1");
        //Log.d("constructornethanglol","1");
    }
    public void setConnection() {
        tv5=(TextView)at.findViewById(R.id.textView5);
        Log.d("thanglol","2");
        try {
            Log.d("lol3","3");
            while (true) {
                Log.d("lol4","4");
                Socket s;
                Log.d("thanglol1","socket");

                //stuck
                s=serverClient.accept();


                Log.d("lol5","5");
                BufferedReader inFromClient =
                        new BufferedReader(new InputStreamReader(s.getInputStream()));
                this.result = inFromClient.readLine();
                tv5.setText("lol");
                s.close(); // sau khi dat. trong while
            }
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    public String getResult() {
        return this.result;
    }
}
你能告诉我我哪里错了吗?谢谢。抱歉我的英语不好,这不是我的第一语言。

1 个答案:

答案 0 :(得分:0)

您应该在后台线程中使用与网络相关的东西。使用AsyncTaskThread

new Thread(new Runnable(
    public void run(){
        //your code.
    }
)).start();

您可以在以下位置查看示例 https://github.com/nabinbhandari/android-socket-messaging