studio socket servidor ejemplo cliente aplicacion android sockets server client-server port

socket - Zócalos de cliente y servidor Android



servidor udp android (2)

Si intentas conectarte a tu pc desde el teléfono, entonces tienes que cambiar la estática privada String hostname = "localhost" para

private static final String hostname = your-pc-ip

Puedes ver tu ip con el comando ipconfig en windows, y ifconfig en linux

Estoy trabajando en Android Studio, y estoy tratando de conectar un servidor que hice, sin éxito. Pude conectar el cliente al servidor cuando el cliente es mi computadora con éxito, cuando utilicé este código:

socket = null; try { Log.e("client", "Attempting to connect to serverrrrrr."); socket = new Socket(hostname, portnumber); Log.e("client", "Connected ! ");

cuando el nombre de host es como: private static final String hostname= "localhost"; private static final int portnumber=55555; private static final String hostname= "localhost"; private static final int portnumber=55555;

luego, me di cuenta de que no funciona cuando intento conectarme con el cliente desde el teléfono, porque necesito poner una dirección IP REAL, y no la del localhost. Por lo tanto, intenté esto:

private static final String hostname= "10.0.0.1"; private static final int portnumber=55555;

con el mismo código anterior, y no funcionó. Es solo permanecer en la línea de: nuevo Socket ... y no avanza y, por lo tanto, no está conectado de manera suculenta. Qué estoy haciendo mal ?

También tengo este fragmento de código: <uses-permission android:name="android.permission.INTERNET"/>

y yo hice "reenvío de puerto". Que más puedo hacer ?

01-30 18:16:47.760 16158-16210/com.omer.tictactoemultiplayer W/System.err: java.net.ConnectException: failed to connect to /10.0.0.1 (port 55555): connect failed: ETIMEDOUT (Connection timed out)

código del servidor: `public class Server extends Thread {

private static final int portnumber = 55555; @Override public void run() { ServerSocket serverSocket = null; try { Log.e("Server", "Server starting at port number: " + portnumber); serverSocket = new ServerSocket(portnumber); while(true) { // Client connecting. Log.e("Server", "Waiting for clients to connect ..."); Socket socket1 = serverSocket.accept(); Log.e("Server", "Client one has connected."); Socket socket2 = serverSocket.accept(); Log.e("Server", "Client two has connected."); //Send message to the server.1 BufferedWriter bw1 = new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream())); bw1.write("found"); bw1.newLine(); bw1.flush(); BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(socket2.getOutputStream())); bw2.write("found"); bw2.newLine(); bw2.flush(); new ServerThread(socket1,socket2).start(); } } catch (IOException e) { e.printStackTrace(); } }

} `


Si solo cambiaste el host de localhost a la ip de tu computadora, entonces tu código java que corre tan bien en tu PC no funcionará para Android.

Como entonces tienes que poner el código de Internet en un hilo o AsyncTask.

Si no lo hace, tendrá una NetworkOnMainThreadException claramente visible en el logcat.