D
DMD-OL
Neues Mitglied
- 0
hi
ich habe eine app geschrieben, mit der ich daten an meinen rechner verschicken kann.
der server läuft auf meinem pc und sendet dem handy einen antwortstring zurück.
der antwortstring ist z.B. "Alles ok", "Falscher Name", usw.
wie kann ich dem handy nun vermitteln, daß es warten soll, bis es eine solche antwort vom server (callback glaub ich) zurückbekommt?
in meinem codeschnippsel ist das bisher noch gar nicht drin, da ich nicht weiß,
ob ich ein neues interface aufmachen soll, oder einfach eine while (true) -schleife einbauen muß, oder, oder....
hier mein code:
falls nötig, stell ich auch den gesamten code rein.
kann mir da jemand auf die sprünge helfen?
ich habe eine app geschrieben, mit der ich daten an meinen rechner verschicken kann.
der server läuft auf meinem pc und sendet dem handy einen antwortstring zurück.
der antwortstring ist z.B. "Alles ok", "Falscher Name", usw.
wie kann ich dem handy nun vermitteln, daß es warten soll, bis es eine solche antwort vom server (callback glaub ich) zurückbekommt?
in meinem codeschnippsel ist das bisher noch gar nicht drin, da ich nicht weiß,
ob ich ein neues interface aufmachen soll, oder einfach eine while (true) -schleife einbauen muß, oder, oder....
hier mein code:
Code:
@Override
protected Void doInBackground(Void... arg0) {
JSONArray arb_List = new JSONArray();
JSONArray mat_List = new JSONArray();
Cursor arb_Cursor = My_Database.getAllData();
if (arb_Cursor.getCount() == 0){
Intent click_datenbank = new Intent(daten_transfer.this,pop_datenbank.class);
startActivity(click_datenbank);
}else {
Socket socket = null;
try {
SocketAddress sock_addresse = new InetSocketAddress(dstAddress, dstPort);
socket = new Socket();
socket.connect(sock_addresse, timeoutMs);
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
String dateTime = sdf.format(new Date());
//Servernamen empfangen
ByteArrayOutputStream bAPS_Name = new ByteArrayOutputStream(1024);
byte[] bytes_Name = new byte[1024];
int int_server;
InputStream input_Name = socket.getInputStream();
int_server = input_Name.read(bytes_Name);
bAPS_Name.write(bytes_Name, 0, int_server);
response += bAPS_Name.toString("UTF-8");
//Datenbank auslesen und in Liste dat_List schreiben
[....]
//Senden
JSONObject json = new JSONObject();
try (OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8)){
json.put("User",userName);
json.put("Datetime",dateTime);
json.put("Datenliste",dat_List);
writer.write(json.toString());
writer.close();
} catch (JSONException e) {
e.printStackTrace();
failMessage = "SORRY, IRGENDETWAS IST SCHIEFGEGANGEN...:\n" + e.toString();
}
//#####################
//hier versuche ich eine while-schleife einzubauen
//#####################
} catch (UnknownHostException e) {
e.printStackTrace();
failMessage = "IP-ADRESSE UNBEKANNT:\n" + e.toString();
} catch (IOException e) {
e.printStackTrace();
failMessage = "PC NICHT ERREICHBAR:\n"+ e.toString();
}finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
failMessage = "IO-Exception:\n" + e.toString();
}
}
}
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (failMessage.length()!= 0){
Toast.makeText(daten_transfer.this,failMessage,Toast.LENGTH_LONG).show();
//Intent click_transfer = new Intent(daten_transfer.this,pop_wlan.class);
//startActivity(click_transfer);
}
else{
SharedPreferences systemDATA = getSharedPreferences("konto",0);
SharedPreferences.Editor editor = systemDATA.edit();
//editor.putString("failmessage",failMessage);
//editor.commit();
editor.putString("response",response);
editor.commit();
if (response.length() != 0){
Intent click_transfer = new Intent(daten_transfer.this,pop_tansfer.class);
startActivity(click_transfer);
}
textView_show.setText(message);
}
}
}
kann mir da jemand auf die sprünge helfen?
Zuletzt bearbeitet: