我想从一个Android应用程序向另一个Android应用程序发送一个字符串(以及后来的图像)。我知道我非常接近。使用TCP通过套接字发送字符串
代码“SendString”是一个手机上的一个Android应用程序。代码“AppListener”在另一部手机上。 “SendString”似乎正常工作,并发送字符串,因为我的所有打印语句正在打印。
“SendString”,这发出了一个字符串“的AppListener”:
(即我送“的applicationName”的字符串获得通过,以“SendString”从项目的不同的活动)
我知道这段代码正在工作,因为我在“try”中获得所有打印语句,并且它永远不会传递给catch异常。
public class SendString extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
Log.d("tag_name", "Entered AsyncTask");
String applicationName = params[0];
// SEND APPLICATION NAME AND ICON TO OTHER APP
try {
Log.d("tag_name", "TRY TO SEND STRING");
Socket socket = new Socket("192.168.0.26", 1755);
DataOutputStream DOS = new DataOutputStream(socket.getOutputStream());
DOS.writeUTF(applicationName);
Log.d("tag_name", "Application Name Sent!");
socket.close();
}
catch (Exception e){
Log.d("tag_name", "Did not send string");
}
return null;
}
}
以下是正在侦听端口连接的其他Android应用程序代码,然后它应该从“SendString”接收字符串。
public class AppListener extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... uri) {
String msg_received = null;
System.out.println("LISTENING FOR LAST INSTALLED APP");
try {
System.out.println("TRY");
ServerSocket socket = new ServerSocket(1755);
System.out.println("Connect to Socket and listening");
Socket clientSocket = socket.accept(); //This is blocking. It will wait.
System.out.println("This should print after connection");
DataInputStream DIS = new DataInputStream(clientSocket.getInputStream());
msg_received = DIS.readUTF();
System.out.println("Message from server" + msg_received);
clientSocket.close();
socket.close();
} catch (Exception e) {
System.out.println("Did not connect to SendString");
}
System.out.println("Return Statement is Reached");
return msg_received;
}
}
的问题是,它似乎被卡住在该行
Socket clientSocket = socket.accept(); //This is blocking. It will wait.
,因为我从来没有得到print语句“这应该连接后打印”,但我得到的所有之前的打印语句那。有人看到问题是什么,为什么我的AppListener活动似乎没有连接到端口来接收字符串,即使我知道“SendString”应用程序正在连接并发送字符串,因为它应该是(因为我看到所有打印语句)。
你应该先运行你的第二个代码(它是你的服务器)。它会等待客户。现在运行你的第一个代码(它是你的客户端) –
@ScaryWombat,我更新了我的问题,以便更清楚。也许你可以看看。我尝试通过运行第二个代码“AppListener”进行测试,但我仍然面临同样的问题。 – Natalie
我可以建议第二个android不在IP地址192.168.0.26上侦听。 –