2012-05-24 239 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