(TCP)服务器/客户端程序

时间:2012-05-24 16:39:00

标签: c# iphone tcp client

我想编写(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);

请帮我解决问题。

2 个答案:

答案 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)