我想编写(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);
请帮我解决问题。
答案 0 :(得分:2)
我执行以下操作,希望对您有所帮助:
在客户端(目标C),我发送数据如下
const uint8_t *str = (uint8_t *) [messageToSend cStringUsingEncoding:NSUTF8StringEncoding];
在C#服务器上我不使用char[]
我使用byte[]
我从Socket读取数据然后将它们转换为string
,如下所示(假设byte
1}}数组名为data
):
string messageReceived = Encoding.UTF8.GetString(data, 0, bytesRead);
bytesRead
是一个整数,它保存读取的字节大小(我从流中获取它,因为我使用TCP套接字)。
我希望这会有所帮助。
答案 1 :(得分:1)
看起来您正在以UTF-8发送数据,但尝试将其读作UTF-16。您需要使用Encoding.UTF8转换:
var content = new UTF8Encoding(true,true).GetString(data)