2012-05-24 102 views
0

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

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

代码:

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

问题将出现在“uint8_t”和“char []”中。但我不知道如何解决它。 – jfalexvijay

+0

你收到了什么数据?每次都一样吗?接收的长度是否与传输的长度相同? –

回答

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是持有(我从流中获取它,因为我使用的TCP套接字)读取的字节大小的整数。

我希望这会有所帮助。

+0

+1非常好...它工作正常... – jfalexvijay

+1

啊太好了,为你高兴:) – antf

1

它看起来像你正在发送数据为UTF-8,但试图读取它作为UTF-16。你需要使用Encoding.UTF8转换:

var content = new UTF8Encoding(true,true).GetString(data) 
+0

+1这是非常有用的...谢谢 – jfalexvijay