Java 线程中的Android套接字连接
我想通过套接字连接收听和阅读短消息(4-10个字符长)。我的应用已成功连接到服务器,但连接似乎未保持。我从未看到服务器发送的消息:-/Java 线程中的Android套接字连接,java,android,sockets,Java,Android,Sockets,我想通过套接字连接收听和阅读短消息(4-10个字符长)。我的应用已成功连接到服务器,但连接似乎未保持。我从未看到服务器发送的消息:-/ public class MainScreen extends AppCompatActivity { private ServerSocket serverSocket; private Socket socket; Handler updateConversationHandler; Thread serverThread = null; priva
public class MainScreen extends AppCompatActivity {
private ServerSocket serverSocket;
private Socket socket;
Handler updateConversationHandler;
Thread serverThread = null;
private TextView text;
public static final int SERVERPORT = 1111;
Thread commThread;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
/*
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
*/
updateConversationHandler = new Handler();
this.commThread = new Thread(new CommunicationThread());
this.commThread.start();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Communication should be openend", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
class CommunicationThread implements Runnable {
private Socket clientSocket;
private BufferedReader input;
public void run() {
while (true) {
try {
socket = new Socket("10.0.1.1", 1111);
this.input = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
String read = input.readLine();
updateConversationHandler.post(new updateUIThread(read));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class updateUIThread implements Runnable {
private String msg;
public updateUIThread(String str) {
this.msg = str;
}
@Override
public void run() {
Log.v("Blub", msg);
// here should be some Work on the UI ...
}
}
只是一个提示,我会尝试记录字符串“read”,看看它是否有那么远。你是如何发送数据的?readLine()将在返回前等待行终止符。请记住,它在stream.osw.write(“Open”,0,4)的末尾返回null;osw.flush();osw.close();我正在从APP-->Server(服务器反应)写入此数据,并以相同的方式将其发送给我的客户端尝试将其更改为“osw.write”(“打开\n”,0,5);“\n是换行符。就是这样…:),现在我的应用程序正在识别这些命令。非常感谢。只是一个提示,我会尝试记录字符串“read”,看看它是否有那么远。你是如何发送数据的?readLine()将在返回前等待行终止符。请记住,它在stream.osw.write(“Open”,0,4)的末尾返回null;osw.flush();osw.close();我正在从APP-->Server(服务器反应)写入此数据,并以相同的方式将其发送给我的客户端尝试将其更改为“osw.write”(“打开\n”,0,5);“\n是换行符。就是这样…:),现在我的应用程序正在识别这些命令。非常感谢。