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

时间:2016-04-21 01:38:19

标签: java android string sockets tcp

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

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

“SendString”,它将字符串发送到“AppListener”:

(我发送的“applicationName”字符串将从项目中的其他活动传递给“SendString”)

我知道这段代码正在运行,因为我在“try”中获取了所有的print语句,并且它永远不会被传递给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语句“这应该在连接后打印”,但我之前得到了所有的print语句。有没有人看到问题是什么以及为什么我的AppListener活动似乎没有连接到端口接收字符串,即使我知道“SendString”应用程序正在连接并发送字符串应该是(因为我看到所有的印刷声明)。

1 个答案:

答案 0 :(得分:0)

  

有没有人看到问题是什么以及为什么我的客户端似乎没有连接到端口接收字符串,即使我知道服务器端正在连接并发送字符串应该是。

  1. 你有'服务员'和'客户'混淆了。客户端连接:服务器接受。
  2. 您描述为客户的真实服务器不接受连接。
  3. 这只能意味着您描述为服务器的真实客户端没有创建一个。
  4. 你必须要么根本没有执行过真正的客户,要么得到一个你没有告诉过我们的ConnectException