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

Reply via email to