gpt4 book ai didi

java - 使用 TCP 通过套接字发送字符串

转载 作者:可可西里 更新时间:2023-11-01 02:54:01 25 4
gpt4 key购买 nike

我正在尝试从一个 Android 应用程序向另一个 Android 应用程序发送一个字符串(后来还有一个图像)。我知道我很亲近。

代码“SendString”是一部手机上的一个 Android 应用程序。代码“AppListener”在另一部手机上。 “SendString”似乎工作正常并发送字符串,因为我所有的打印语句都在打印。

“SendString”,正在向“AppListener”发送字符串:

(我发送“applicationName”的字符串正在从项目中的不同 Activity 传递到“SendString”)

我知道这段代码是有效的,因为我在“try”中得到了所有的打印语句,而且它永远不会传递给 catch Exception。

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.

因为我从来没有得到打印语句“这应该在连接后打印”,但我得到了之前的所有打印语句。有没有人看到问题是什么以及为什么我的 AppListener Activity 似乎没有连接到端口以接收字符串,即使我知道“SendString”应用程序正在连接并按应有的方式发送字符串(因为我看到了所有打印语句)。

最佳答案

Does anyone see what the problem is and why my Client seems to not connect to the port to receive the string, even though I know that the server side is connecting and sending the string as it should be.

  1. 您混淆了“服务器”和“客户端”。客户端连接:服务器接受。
  2. 您描述为客户端的真实服务器不接受连接。
  3. 这只能意味着您的真实客户端(您描述为您的服务器)并没有创建客户端。

您必须要么根本没有执行您的真实客户端,要么得到了一个您没有告诉我们的 ConnectException

关于java - 使用 TCP 通过套接字发送字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com