我想将数据(简单文本)从android发送到计算机并在计算机应用程序中显示收到的文本,因此我创建了2个应用程序,第一个在Android设备(客户端)中运行,第二个在计算机(服务器)中运行。我用java语言创建了两个应用程序。
当我在genymotion中运行android应用程序时,一切正常,两个应用程序都可以连接在一起,但是当我在真实设备应用程序中运行android应用程序无法连接在一起,而两者都在同一网络和IP地址是正确的。
计算机应用程序代码(服务器):
try {
ServerSocket serverSocket = new ServerSocket(9000);
Socket socket = serverSocket.accept();
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(true){
String message = bufferedReader.readLine();
message(message);
}
} catch (IOException e) {
e.printStackTrace();
}
Android应用程序代码(客户端):
new Thread(new Runnable() {
@Override
public void run() {
try {
message("Waiting for Connection...");
socket= new Socket("192.168.1.6", 9000);
message("Connected...");
dataOutputStream = new DataOutputStream(socket.getOutputStream());
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(socket==null){ return; }
try {
String message = edtMessage.getText().toString() + "\n";
dataOutputStream.write(message.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
});
message(message);
}
} catch (IOException e) {
e.printStackTrace();
}
screen shot(application connected when i run android application in genymotion
请指导我解决这个问题。感谢
答案 0 :(得分:0)
您无法在点击侦听器的处理程序中写入输出流。你也应该在一个线程中做到这一点。