I'm connecting a mobile with a java aplication but I keep getting this warning:
01-05 13:19:30.759: W/System.err(3371): java.net.BindException: bind failed: EADDRINUSE (Address already in use)
01-05 13:19:30.759: W/System.err(3371): at libcore.io.IoBridge.bind(IoBridge.java:89)
01-05 13:19:30.759: W/System.err(3371): at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:150)
01-05 13:19:30.759: W/System.err(3371): at java.net.ServerSocket.bind(ServerSocket.java:318)
01-05 13:19:30.759: W/System.err(3371): at java.net.ServerSocket.bind(ServerSocket.java:281)
01-05 13:19:30.759: W/System.err(3371): at com.example.informativoapp.ConnectThread.run(ConnectThread.java:32)
01-05 13:19:30.759: W/System.err(3371): Caused by: libcore.io.ErrnoException: bind failed: EADDRINUSE (Address already in use)
01-05 13:19:30.759: W/System.err(3371): at libcore.io.Posix.bind(Native Method)
01-05 13:19:30.759: W/System.err(3371): at libcore.io.ForwardingOs.bind(ForwardingOs.java:39)
01-05 13:19:30.759: W/System.err(3371): at libcore.io.IoBridge.bind(IoBridge.java:87)
01-05 13:19:30.759: W/System.err(3371): ... 4 more
I'm using this code :
Mobile code :
private ConnectedThread con;
private ConnectThread connect;
...
protected void onCreate(Bundle savedInstanceState) {
...
connect = new ConnectThread(mHandler);
connect.start();
}
public void onBackPressed() {
if(connect != null)
connect.interrupt();
if(con != null)
con.interrupt();
finish();
}
public class ConnectThread extends Thread {
Handler mHandler;
private ConnectedThread con;
public ConnectThread(Handler mHandler)
{
this.mHandler = mHandler;
}
@Override
public void run()
{
while(true){
Socket socket=null;
try {
ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(4200));
socket = serverSocket.accept();
Log.i("conex", "Conectou");
mHandler.obtainMessage(3,socket).sendToTarget();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
handler execute it :
con = new ConnectedThread((Socket)msg.obj, mHandler);
con.start();
EDITED (thanks Titus)
Probably, Your code creates socket every time. Please try this.
Socket socket=null;
try {
ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(4200));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
Log.i("conex", "Conectou");
socket = serverSocket.accept();
mHandler.obtainMessage(3,socket).sendToTarget();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.