我是这种发展的新手。简而言之,我正在开发一个将字符串发送到云的 android 应用程序(我在亚马逊上有一台虚拟服务器机器),一切正常,将字符串从我的手机发送到服务器机器,我打印字符串我发送,它的工作原理!但是,当从服务器将响应返回到我的 android 应用程序(我在我的 android 手机上运行它)时,我什么也没有得到(响应应该是一个字符串 + 另一个串联的字符串),就是这样,简单吧?但不幸的是,我无法收到它。我测试了服务器端,它工作正常(亚马逊 EC2)。我不确定我是否可以做我正在做的事情:
创建传输代码以使用 SOCKET 将数据发送到来自 AsyncTask 类的 doInBackground() 方法的云上的字符串。在相同的方法 doInBackground 中,我执行代码以通过使用 ServerSocket 从云接收响应来接收响应。有可能还是我需要另一个线程或类似的东西?
这是我的代码:
`import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.*;
import android.os.AsyncTask;
import android.view.View;
public class ReadWebpageAsyncTask extends Activity {
private TextView textView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView) findViewById(R.id.TextView01);
}
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls)
{
String response = "";
//Transmission
try
{
Socket socket = new Socket("MyAmazonServerIp", 5678);
DataOutputStream salida = new DataOutputStream (socket.getOutputStream());
salida.writeUTF("Llego Perfectamente");
socket.close();
salida.close();
}
catch (Exception e)
{
e.printStackTrace();
}
//Final ends
// Reception
boolean ak=true;
try
{
ServerSocket ServerSock = new ServerSocket(7896);
while(ak)
{
Socket cl=ServerSock.accept();
InetAddress ipC = cl.getInetAddress();
DataInputStream en= new DataInputStream(cl.getInputStream());
response= en.readUTF();
//response= response.toString();
ak=false;
}
}
catch(Exception exp)
{
exp.printStackTrace();
}
// Reception ends
return response;
} //doInBackground ends
@Override
protected void onPostExecute(String result)
{
textView.setText(result);
}
}
public void readWebpage(View view) {
DownloadWebPageTask task = new DownloadWebPageTask();
task.execute(new String[] { "????" });
}
}`
我将非常感谢任何帮助,因为我已经为此工作了好几天,但我无法解决它。谢谢,