TCP服务器得到????????而不是真实的消息

时间:2016-09-08 14:36:41

标签: c# android sockets tcpclient tcplistener

服务器是用c#编写的,并且与我在c#中创建的客户端一起正常工作,现在我正在尝试创建一个Android客户端但是服务器没有得到真正的消息,它只是得到了很多问号。

这是服务器

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

这是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);

例如,如果我发送消息" Hello",服务器将打印" ???????????"对于我发送的任何消息,它都会发生相同的情况,即使只是一个字母

我也尝试过不同的方法,但结果是一样的:

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

1 个答案:

答案 0 :(得分:0)

更改:

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

成:

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

另请尝试UTF16。我认为java现在使用这种编码。