I\'m trying to make a program which listens to the client input stream by using socket programming and timer
but whenever timer executes.. it gets hanged
Ple
I think you want to use socket timeouts instead of a timer:
Thread listener = new Thread() {
ServerSocket ss;
@Override
public void run() {
try {
ss = new ServerSocket(5000);
ss.setSoTimeout(2000);
try {
while (true) {
try {
final String text = acceptText();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea1.append(text);
}
});
} catch (final Exception ex) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setLbl(ex.getMessage());
}
});
}
}
} finally {
ss.close();
}
} catch (IOException ex) {
Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String acceptText() throws IOException {
Socket s = ss.accept();
try {
InputStream is=s.getInputStream();
try {
DataInputStream dis=new DataInputStream(is);
return dis.readUTF();
} finally {
is.close();
}
} finally {
s.close();
}
}
};
listener.setDaemon(true);
listener.start();