I am having an awkward issue (may be for me). I am using the timer to perform Tcp listner and socket programming. I am opening a socket to listen any data present on the port sent from another Android device (working correctly) regularly. I have created 2 applications to test the data receiving, one is just dummy and second is my main application. I am getting exception in my main application but not in the dummy application.
Exception is : android.os.NetworkonMainThreadException
The code is exactly same in both apps here it is
onCreate()
contains
timer2 = new Timer();
timer2.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod();
}
}, 0, 1000);
TimerMethod()
is as follows
private void TimerMethod()
{
this.runOnUiThread(Timer_Tick);
}
Timer_Tick
is:
private Runnable Timer_Tick = new Runnable() {
public void run() {
try
{
runTcpServer();
}
catch(Exception a)
{
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(a.toString());
}
}
};
And the main Tcp method to listen the data on the port
public void runTcpServer()
{
ServerSocket ss = null;
try {
ss = new ServerSocket(TCP_SERVER_PORT);
//ss.setSoTimeout(10000);
//accept connections
Socket s = ss.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//receive a message
String incomingMsg = in.readLine() + System.getProperty("line.separator");
TextView tv= (TextView) findViewById(R.id.textView2);
//Log.d("TcpServer", "received: " + incomingMsg);
tv.append(incomingMsg);
//send a message
String outgoingMsg = "goodbye from port " + TCP_SERVER_PORT + System.getProperty("line.separator");
out.write(outgoingMsg);
out.flush();
Log.d("TcpServer", "sent: " + outgoingMsg);
//textDisplay.append("sent: " + outgoingMsg);
//SystemClock.sleep(5000);
s.close();
} catch (InterruptedIOException e) {
//if timeout occurs
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (ss != null) {
try {
ss.close();
} catch (IOException e) {
Log.d("Error",e.toString());
}
}
}
}
The exception i am getting is when i am calling the runTcpServer()
in Timer_Tick