【发布时间】:2014-07-09 05:27:00
【问题描述】:
我有一个应用程序 android 向服务器 (PC) 发送数据,但我没有从 PC 向应用程序接收任何数据。还有,如何监听传入的 UDP 消息?
因为我需要一个应用程序一直运行,即使该应用程序已关闭。如何确保我的“侦听器”服务始终运行? 我希望在消息从服务器到达智能手机时收到通知。
这是我的代码:
public class MainActivity extends Activity implements TextWatcher, OnClickListener {
Client client;
EnvoyerMess envoyermessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
client = new Client();
client.execute();
lancer.setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
envoyermessage=new EnvoyerMess();
envoyermessage.execute();
}
});
}
class Client extends AsyncTask<Void,Void,String>{
DatagramSocket client;
String test ;
public String doInBackground(Void...params){
String result=null;
int port=4000;
DatagramSocket clientSocket = null;
byte[] receiveData = new byte[256];
DatagramPacket packet = new DatagramPacket(receiveData, receiveData.length);
try{
InetAddress adresse = InetAddress.getByName("10.0.2.2");
clientSocket = new DatagramSocket(port);
clientSocket.receive(packet);
result = new String(packet.getData());
Log.d("","Received :) ");
}catch (Exception e) {
e.printStackTrace();
} finally {
if (clientSocket != null) {
clientSocket.close();
}
}
return result;
}
public void onPostExecute(String result){
if (result != null) {
//createNotify();
TextView tv = (TextView) MainActivity.this.findViewById(R.id.textView1);
tv.setText(result);
}
}
提前谢谢..
【问题讨论】:
-
让它在您计算机上的客户端/服务器中工作,首先到您的计算机上 - 当它工作时,将其移动到 android。从 android 到家用机器的网络通信有很多陷阱。 (例如,您是在家中使用 wifi 还是使用运营商网络到您家?如果是后者,at 可以安全地假定他们的代码您将无法工作 - 因为 10.0.0.2 将无法访问从那个起源)