我有一个应用程序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);
}
}
提前感谢..
答案 0 :(得分:1)
我首先要确保PC实际上是将数据包发送到正确的IP地址。通过使用wireshark,http://www.wireshark.org/或类似工具来完成此操作。
要确保您的任务正在运行,即使应用程序已关闭,您也需要一项服务http://developer.android.com/guide/components/services.html。
编辑:
我使用的是模拟器,您必须先在avd路由器中启用重定向。此链接提供了有关如何完成此developer.android.com/tools/devices/emulator.html#redirection的说明(我无法发布链接,因此您必须复制粘贴)。
如果您在Windows中开发,则还需要启用telnet。此链接描述了完成该社交的步骤。技术全文/微软账号/磁带/文件/电子邮件:http://www.windows-7-enabling-artnet-client.aspx(再次,复制粘贴)