Hellow, I am making a program that is capable of sending and receiving as a server or a client. The program works but once I have an exception (timeout because the client/server isn't initialized).
Example: pc as server ==> on android as client ==> connect, no problem disable client and server connect android client ==> timeout on socket server ==> on connect android client ==> same timeout message directly (without the 4500 ms delay) I tried a lot of things but without the time out the program keeps hanging and android asks if I want to close it or without the proper catch exception it crashes (of course). The code: package muco.NetwerkServerClient; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class netwerkServerClient extends Activity { /** Called when the activity is first created. */ /** Layout values*/ EditText edit1; TextView text2; Button knop1, knop2, knop3, knop4, knop5, knop6, knop7, knop8; /** Save instance values*/ /** Client values */ Socket clientSocket = null; BufferedReader inClient = null; PrintWriter outClient = null; boolean clientInitialised = false; /** Server values */ Socket serverSocket = null; ServerSocket server = null; BufferedReader inServer = null; PrintWriter outServer = null; boolean serverInitialised = false; /** Common network values */ int port; int maxPort = 65535; String ip = null; int timeOut = 4500; boolean ipSet = false; boolean portSet = false; /** Values */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.relative); edit1 = (EditText) findViewById(R.id.edit_1); knop1 = (Button) findViewById(R.id.knop_1); knop1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop1(v); }//public void onClick(View v) });//knop1.setOnClickListener(new View.OnClickListener() knop2 = (Button) findViewById(R.id.knop_2); knop2.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop2(v); }//public void onClick(View v) });//knop2.setOnClickListener(new View.OnClickListener() knop3 = (Button) findViewById(R.id.knop_3); knop3.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop3(v); }//public void onClick(View v) });//knop3.setOnClickListener(new View.OnClickListener() knop4 = (Button) findViewById(R.id.knop_4); knop4.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop4(v); }//public void onClick(View v) });//knop4.setOnClickListener(new View.OnClickListener() knop5 = (Button) findViewById(R.id.knop_5); knop5.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop5(v); }//public void onClick(View v) });//knop5.setOnClickListener(new View.OnClickListener() knop6 = (Button) findViewById(R.id.knop_6); knop6.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop6(v); }//public void onClick(View v) });//knop6.setOnClickListener(new View.OnClickListener() knop7 = (Button) findViewById(R.id.knop_7); knop7.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop7(v); }//public void onClick(View v) });//knop7.setOnClickListener(new View.OnClickListener() knop8 = (Button) findViewById(R.id.knop_8); knop8.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { knop8(v); }//public void onClick(View v) });//knop8.setOnClickListener(new View.OnClickListener() text2 = (TextView) findViewById(R.id.text_2); }// public void onCreate(Bundle savedInstanceState) { @Override public void onPause() { super.onPause(); }//public void onPause() @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); }//public void onSaveInstanceState(Bundle outState @Override public void onRestoreInstanceState(Bundle outState) { super.onRestoreInstanceState(outState); }//public void onRestoreInstanceState(Bundle outState) @Override public void onDestroy() { super.onDestroy(); }//public void onDestroy() void knop1(View v) {//inschakelen als server text2.setText(initServer(port)); }//void knop1(View v) void knop2(View v) {//ip int temp = 0; if ((edit1.getText().toString()) != null) { ip = edit1.getText().toString(); temp = ip.length(); if(temp > 4) { text2.setText("Doel IP-adres is ingesteld op: " + ip + " Herstart de service"); ipSet = true; } else { text2.setText("IP-adres onjuist. Voer een IP-adres in, in de vorm van xxx.xxx.xxx.xxx of gebruik de volledige netwerknaam van de machine"); }//else edit1.setText(""); } }//void knop2(View v) void knop3(View v) {//poort text2.setText(setPort(edit1.getText().toString() )); edit1.setText(""); }//void knop3(View v) void knop4(View v) {//send if(serverInitialised) { text2.setText(setServerText(edit1.getText().toString())); } else if(clientInitialised) { text2.setText(setClientText(edit1.getText().toString())); } else { text2.setText("Schakel de server of client in"); } edit1.setText(""); }//void knop3(View v) void knop5(View v) {//recieve if(serverInitialised) { text2.setText(getServerText()); } else if (clientInitialised) { text2.setText(getClientText()); } else { text2.setText("Schakel de server of client in"); } }//void knop3(View v) void knop6(View v) {//close if(serverInitialised) { text2.setText(closeServer()); } else if (clientInitialised) { text2.setText(closeClient()); } else { text2.setText("Geen server of client geinitialiseerd"); }//else if } void knop7(View v) {//inschakelen als client text2.setText(initClient(ip, port)); } void knop8(View v) { ip = "192.168.10.47"; port = 4444; ipSet = true; portSet = true; text2.setText("IP-adres ingesteld op: " + ip + "\n poort ingesteld op: " + port + "\n Start de server of client"); }//void knop8(View v) void restoreUIState() { }//restoreUIState() String initServer(int p) { String s = ""; if(clientInitialised) { closeClient(); }//if if(portSet) { try{ server = new ServerSocket(p); server.setSoTimeout(timeOut); serverSocket = server.accept(); serverSocket.setSoTimeout(timeOut); } catch (IOException e) { s = ("I/O error: fout bij het toewijzen van de sockets"); }//try try{ inServer = new BufferedReader(new InputStreamReader(serverSocket.getInputStream())); outServer = new PrintWriter(serverSocket.getOutputStream(), true); serverInitialised = true; ipSet = false; portSet = false; s = "Server voor poort: " + p + " succesvol gestart"; } catch (IOException e) { s = "I/O error: fout bij het verkrijgen van de in- en outstreams"; serverInitialised = false; } catch (Exception e) { s = "Timeout error: fout bij het initialiseren van de in- en outputstreams"; ipSet = false; portSet = false; serverInitialised = false; }//try } else if (!portSet) { s = "Stel een poort in"; } else { s = "Onbekende error bij het initialiseren van de server"; }//if else return s; }//initServer(int p) String initClient(String i, int p) { String s = null; if (serverInitialised) { closeServer(); } if(ipSet && portSet) { try{ clientSocket = new Socket(i, p); clientSocket.setSoTimeout(timeOut); } catch (IOException e) { s = ("I/O error: fout bij het toewijzen van de socket"); } catch (Exception e) { s = "Timeout error: fout bij het initialiseren van de socket"; }//try try{ outClient = new PrintWriter(clientSocket.getOutputStream(), true); inClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); clientInitialised = true; ipSet = false; portSet = false; s = "Client verbinding met " + i + ":" + p + " succesvol gestart"; } catch (UnknownHostException e) { s = ("IP-adres: " + i + ":" + p + " niet gevonden"); clientInitialised = false; } catch (IOException e) { s = "IO error: kan geen IO verbinding maken met de server"; clientInitialised = false; } catch (Exception e) { s = "Timeout error: fout bij het initialiseren de in- en outputstreams"; ipSet = false; portSet = false; clientInitialised = false; }//try }else if (!(ipSet && portSet)) { s = "Stel het IP-adres en de poort in"; }else if((!ipSet) && portSet) { s = "Stel het IP-adres in)"; }else if((!portSet) && ipSet) { s = "Stel een poort in"; } else { s = "Onbekende error bij het initialiseren van de client"; }//if else return s; }//void initClient(String i, int p) String closeServer() { String temp = "Server succesvol afgesloten"; outServer.close(); try { inServer.close(); serverSocket.close(); server.close(); } catch (IOException e) { temp =("I/O error: fout bij het afsluiten van de sockets"); }//try serverInitialised = false; return temp; }//void closeServer() String closeClient() { String temp = "Client succesvol afgesloten"; outClient.close(); try { clientSocket.close(); } catch (IOException e) { temp = ("I/O error: clientSocket kan niet worden gesloten"); }//try try { inClient.close(); } catch (IOException e) { temp = ("I/O error: inClient bufferdReader kan niet worden gesloten"); }//try clientInitialised = false; return temp; }//void closeClient() String setPort(String s) { int temp = 0; String q = null; if (s.length() >= 1) { try { temp = Integer.parseInt(s); if((temp > 0) && (temp < (maxPort+1))) { port = temp; q = ("Doel poort ingesteld op: " + port + " Herstart de service"); portSet = true;; } else { q = (temp + " is geen geldige waarde. Kies een waarde tussen 1 en " + maxPort); }//if else } catch (NumberFormatException e) { q = "Onjuiste poortwaarde. Voer een poortwaarde in van 1 tot en met " + maxPort + ". Gebruik alleen 0 - 9."; }//try } else { q = s + " is geen geldige poortwaarde. Voer een waarde in van 1 tot en met " + maxPort + ". Gebruik alleen 0 - 9."; }//if else return q; }//void setPort(String s) String setClientText (String s) { String temp = null; temp = edit1.getText().toString(); outClient.println(temp); return (temp + " is verzonden naar: " + ip + ":" + port); }//String setClientText (String s) { String setServerText(String s) { outServer.println(s); return (s + " verzonden via poort:" + port); }//setText(String s) String getClientText() { String temp = null; try{ temp = inClient.readLine(); temp = (temp + " ontvangen van " + ip + ":" + port); } catch (IOException e){ temp = ("IO error: Kan geen gegevens ontvangen op: " + ip + ":" + port); }return temp; }//String getClientText() String getServerText() { String s = null; String recieve = null; try{ recieve = inServer.readLine(); s = ("Ontvangen op poort " + port + ": " + recieve); } catch (IOException e) { s = ("I/O error: Kan geen gegevens ontvangen op poort: " + port); }//try return s; }//void getText() }//public class NetwerkSendRecieve extends Activity -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en