web-dev-qa-db-ja.com

送信TCPデータからAndroid(クライアントとして)-データは送信されていませんか?

AndroidアプリからPCにTCP経由でデータを送信しようとしています。

コードは次のとおりです。

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");              

これを実行している間、エラーはまったく発生しませんが、サーバーアプリケーション(C#で記述)はデータを取得しません。クライアントがそれに接続していることを確認し、データが送信されていることを確認しますが、データ文字列は空になります...そしてなぜこれが起こっているのか考えますか?

PS:サーバーコードは次のサイトからコピーされ、C#TCPクライアントでテストされています。 http://www.switchonthecode.com/tutorials/csharp-tutorial- simple-threaded-tcp-server

12
J J

out.flush();out.close();の後にprintln(..)を付けてみてください。

17
Haphazard

私は同じ問題を抱えていましたが、ハファザードの解決策は私にとって十分ではありませんでした。 (この場合)output.flush();output.close();の代わりにout.flush();out.close();を使用する必要があると思います。そして、あなたはAndroidManifest.xmlのインターネット許可について覚えておく必要があります:

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

<uses-sdk>の後および<application>の前

10
CookieMonssster

全体的にこれを推測しますが、閉じる前に出力ストリームでflush()を呼び出してみましたか?

2
Trevor