首先, 允许internt访问权限:
<uses-permission android:name="android.permission.INTERNET" />
其次, socket不允许在mainactivity下创建, 所以必须起线程:
new Thread(new Runnable(){ @Override public void run() { //中间的代码 } }).start();
最后, 起线程后, 需要子线程对主线程进行通讯, 采用handler, 主程序接收消息方面, 网上参考的代码太老, 可以运行, 但是有警告, 这个代码没有警告, 适应2019年的android studio.:
private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(@NonNull Message msg) { switch (msg.what) { case -1: Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show(); break; case 1: Toast.makeText(MainActivity.this, msg.obj.toString(), Toast.LENGTH_SHORT).show(); break; } return false; } });
handler发送端的代码: