通过TCP服务器在Android上玩tic-tac-toe游戏
我有一个Android Studio客户端,需要更新到其他玩家的移动,因此我尝试为客户端创建一个无休止的循环,以便客户端可以一直收听服务器,但当我调试它时,我发现当它尝试读取UTF时,没有数据,它触发了循环 我的代码:通过TCP服务器在Android上玩tic-tac-toe游戏,android,Android,我有一个Android Studio客户端,需要更新到其他玩家的移动,因此我尝试为客户端创建一个无休止的循环,以便客户端可以一直收听服务器,但当我调试它时,我发现当它尝试读取UTF时,没有数据,它触发了循环 我的代码: public class MainActivity extends AppCompatActivity { TextView cell1; Handler h; String myShape, opponentShape, messageRecieved,
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。感谢您将代码添加到您的问题中,找到问题至关重要。请在“它不起作用”之后再详细描述这个问题,这样我们就可以看看代码失败的地方。你能提供任何实际的错误信息或堆栈跟踪吗?我调试了它,当没有数据时,它尝试读取它,但它只是停止了循环。。。