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

私は次のことを行います。

クライアント(Objective C)では、次のようにデータを送信します

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

char[]私が使用していないC#サーバーではbyte[]、ソケットからデータを読み取り、次のように変換します(配列の名前がstringであると仮定します):bytedata

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

bytesRead読み取られたバイトのサイズを保持する整数です (TCP ソケットを使用しているため、ストリームから取得します)。

これが役立つことを願っています。

于 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 に答える