【问题标题】:(TCP) Server/Client program(TCP) 服务器/客户端程序
【发布时间】:2012-05-25 00:51:36
【问题描述】:

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

请帮我解决问题。

【问题讨论】:

  • 问题在于“uint8_t”和“char[]”。但我不知道如何解决它。
  • 您收到什么数据?每次都一样吗?接收长度和发送长度一样吗?

标签: c# iphone tcp client


【解决方案1】:

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

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

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

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

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

bytesRead 是一个整数,它保存读取的字节大小(我从 Stream 中获取它,因为我使用 TCP 套接字)。

我希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 1970-01-01
      • 2014-03-04
      • 2010-11-29
      • 1970-01-01
      • 2012-05-30
      • 2011-03-21
      • 2013-08-20
      • 2012-01-04
      相关资源
      最近更新 更多