0

我想编写(TCP)服务器客户端程序。客户端代码应该在 Objetive-C 中。服务器端代码应该在 C# 中。

我写了一些代码。这是工作。但问题是;我正在将消息从客户端发送到服务器。服务器正在接收消息。但收到的消息看起来像“加密”数据。

代码:

Objective-C
const uint8_t *rawdata = (const uint8_t*)[@"Welcome..." UTF8String];
[outputStream write:rawdata maxLength:strlen((const char *)rawdata)];

C#
char[] chara = new char[data.Length / sizeof(char)];
System.Buffer.BlockCopy(data, 0, chara, 0, chara.Length);
String content = new String(chara);
Console.WriteLine("Received data : " + content);

请帮我解决问题。

4

2 回答 2

2

我做了以下,希望对你有帮助:

在客户端(目标 C)我发送数据如下

const uint8_t *str = (uint8_t *) [messageToSend cStringUsingEncoding:NSUTF8StringEncoding];

在我不使用的 C# 服务器上char[]byte[]我从 Socket 读取数据,然后将它们转换string为如下(假设byte数组名为data):

string messageReceived = Encoding.UTF8.GetString(data, 0, bytesRead);

bytesRead is an integer that holds the size of bytes read (I get it from the Stream since I use TCP Sockets).

I hope this helps.

于 2012-05-24T16:51:36.493 回答
1

看起来您正在以 UTF-8 格式发送数据,但尝试将其读取为 UTF-16。您需要使用Encoding.UTF8进行转换:

    var content = new UTF8Encoding(true,true).GetString(data)
于 2012-05-24T16:47:49.937 回答