2016-09-08 6 views
0

サーバはC#で書かれていて、私がC#で作ったクライアントで正しく動作しますが、今はアンドロイドクライアントを作ろうとしていますが、サーバは実際のメッセージを受け取れません。疑問符のここでTCPサーバーは????????実際のメッセージの代わりに

は、私がメッセージ "こんにちは"、サーバ・プリント「を送信する場合、これはAndroidのクライアント例えば

EditText et = (EditText) findViewById(R.id.EditText01); 
String str = et.getText().toString() 
PrintWriter out = new PrintWriter(new BufferedWriter(
      new OutputStreamWriter(socket.getOutputStream())), 
       true); 
out.println(str); 

あるサーバー

TcpListener listen = new TcpListener(IPAddress.Any, 1200); 
TcpClient client; 
listen.Start(); 
client = listen.AcceptTcpClient(); 
NetworkStream stream = client.GetStream(); 
byte[] buffer = new byte[client.ReceiveBufferSize]; 
int data = stream.Read(buffer, 0, client.ReceiveBufferSize); 
string message = Encoding.Unicode.GetString(buffer, 0, data); 
Console.WriteLine(message); 

ある???????? ??? "そしてそれは私もこのようなさまざまな方法で試みたが、結果は同じである私は、送信するすべてのメッセージ、だけでも、1文字

のために同じことを起こる:

DataOutputStream out = new DataOutputStream(socket.getOutputStream()); 
     out.writeBytes(str); 
+1

エンコードの問題のようです。サーバー上でエンコードが設定されていることを確認してください –

+0

ニキータとはどういう意味ですか?私はPrintStream out = new PrintStream(socket.getOutputStream())でAndroidクライアントを変更しようとしました。 でも、私はまだ同じエラーが発生します – Alessandro

+0

'String str = et.getText()。toString()'。定義済みの文字列を使用する方が効果的です。送信されたバイト数と受信されたバイト数を教えてください。 – greenapps

答えて

0

変更:

string message = Encoding.Unicode.GetString(buffer, 0, data); 

string message = Encoding.UTF8.GetString(buffer, 0, data); 

UTF16も試してみてください。私はjavaが今このエンコーディングを使うと思う。

+0

ええ、このように動作します。アンドロイドがutf8の代わりにユニコードでメッセージを送信する方法はありますか? – Alessandro

+0

参照:http://stackoverflow.com/questions/18606523/how-to-convert-utf-8-to-unicode-in-java – AhmadWabbi

関連する問題