2011-06-10 16 views
11

Estoy tratando de enviar datos desde mi aplicación de Android a mi PC a través de TCP.Envío de datos TCP desde Android (como cliente): ¿no se envían datos?

El código es el siguiente:

Socket socket = new Socket("10.0.78.75", 50505); 

OutputStream out = socket.getOutputStream();  
PrintWriter output = new PrintWriter(out);   

mStatusText.setText("Sending Data to PC");   
output.println("Hello from Android");    
mStatusText.setText("Data sent to PC");    

socket.close();          
mStatusText.setText("Socket closed");    

no consigo ningún error en absoluto mientras se hace esto, sin embargo, la aplicación de servidor (escrito en C#) no recibe ningún dato. Ve al cliente conectarse a él y ve que se están enviando los datos, sin embargo, la cadena de datos sale vacía ... ¿Y las ideas sobre por qué sucede esto?

PD: El código del servidor se copia desde el siguiente sitio y se ha probado con un cliente C# TCP. http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server

+0

¿Estás en un dispositivo o en el emulador? ¿tienes permiso de internet en tu manifiesto? –

Respuesta

13

Intente poner un out.flush();out.close(); después del println(..);

+0

Eso hizo el truco, gracias! –

2

Total, adivina esto, pero ¿has intentado llamar a flush() en el flujo de salida antes de cerrar?

10

Tuve el mismo problema y las soluciones de Haphazard no fueron lo suficientemente buenas para mí. Creo que debería usar (en este caso) output.flush(); y output.close(); en lugar de out.flush(); y out.close();. Y hay que recordar acerca de permisos de Internet en AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

después <uses-sdk> y antes <application>

+0

sí, usted es correcto @CookieMonssster, output.flush(); y output.close(); funciona para mi. Gracias por la corrección aquí. –

Cuestiones relacionadas