通过TCP服务器在Android上玩tic-tac-toe游戏

通过TCP服务器在Android上玩tic-tac-toe游戏,android,Android,我有一个Android Studio客户端,需要更新到其他玩家的移动,因此我尝试为客户端创建一个无休止的循环,以便客户端可以一直收听服务器,但当我调试它时,我发现当它尝试读取UTF时,没有数据,它触发了循环 我的代码: public class MainActivity extends AppCompatActivity { TextView cell1; Handler h; String myShape, opponentShape, messageRecieved,

我有一个Android Studio客户端,需要更新到其他玩家的移动,因此我尝试为客户端创建一个无休止的循环,以便客户端可以一直收听服务器,但当我调试它时,我发现当它尝试读取UTF时,没有数据,它触发了循环

我的代码:

public class MainActivity extends AppCompatActivity {
    TextView cell1;
    Handler h;
    String myShape, opponentShape, messageRecieved,move,viewSpot;
    TableLayout table;
    StringBuffer incoming = new StringBuffer();
    StringBuilder stringBuilder = new StringBuilder();
    ImageView ttl;
    StringBuilder info = new StringBuilder();
    int r,c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cell1 = (TextView) findViewById(R.id.cell1);
        ttl = (ImageView) findViewById(R.id.ttl);
        table = (TableLayout)findViewById(R.id.table);
        h = new Handler(getMainLooper());
        whoAmI();
        listener();
    }

    public void listener() {
        new Thread() {
            public void run() {
                try {
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Socket socket = new Socket("10.0.0.1", 999);
                    DataInputStream input = new DataInputStream(socket.getInputStream());
                        messageRecieved = input.readUTF();
                    String[] parts = messageRecieved.split(",");
                    r = Integer.parseInt(parts[1]);
                    c = Integer.parseInt(parts[2]);
                    move = parts[0];
                    h.post(new Runnable() {
                        public void run() {
                            TextView tv = (TextView) table.findViewWithTag(r + "," + c);
                            tv.setText(move);
                        }
                    });
                }catch (IOException e) {
                    e.printStackTrace();
                    listener();
                }
        }
    }.start();
}

大家好,欢迎来到SO。感谢您将代码添加到您的问题中,找到问题至关重要。请在“它不起作用”之后再详细描述这个问题,这样我们就可以看看代码失败的地方。你能提供任何实际的错误信息或堆栈跟踪吗?我调试了它,当没有数据时,它尝试读取它,但它只是停止了循环。。。