2013-12-13 93 views
0

二進制圖像數據如何發送通過無線字節(byte[])陣列?Socket編程/發送通過無線

我目前工作的一個客戶機/服務器聊天應用程序。我已經實現了各種其他功能,如配置文件管理,但我面臨的問題是試圖通過無線發送圖像。

我已經知道如何將圖像轉換爲字節格式並從數據庫中保存/檢索,但是當涉及到使用TCP/IP發送它時,它不適用於正在使用的類(StreamWriter)。

我需要發送什麼類的字節流?不干涉他的個人資料細節?這是我的算法:連接用戶信息,例如他的用戶名,密碼,位置,性別,狀態和嵌入服務器符號例如(%,^,〜,`),所以服務器可以將他的信息拆分並保存在數據庫中。

一切都工作得很好,直到我試圖串聯的字節數組(byte[]即圖像數據),與他的信息。

我的解決辦法:我會送他的信息分開即所有字符串會在一起,他的形象會獨自站立時,我想他的個人資料信息發送給服務器。

我的班:我使用流作家寫用戶信息到服務器。 請給我看一個例子,使用一個好的類,例如(二進制作家)發送他的個人資料圖片。如果我可以在服務器上獲得二進制代碼,我將非常感激,非常感謝。

+0

「StreamWriter」適用於編寫字符串。使用'BinaryWriter'寫入二進制數據。 – Kami

回答

2

TcpClient會工作。

TcpClient tcpClient = new TcpClient(); 
tcpClient.Connect(server, port); 
Stream stream = tcpClient.GetStream(); 

byte[] testString = Encoding.ASCII.GetBytes("test"); 
stream.Write(testString, 0, testString.Length); 

stream.Close(); 
tcpClient.Close(); 

這將發送string「測試」。您可以將相同的邏輯應用於不同的數據格式。

byte[] hexMsg = new byte[] { 0x1A, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 }; 
stream.Write(hexMsg, 0, hexMsg.Length); 

這將在整個流中發送一些hex值。

+0

感謝您的幫助所有我很感激,我做了一個算法來解決它,因爲我的急躁和缺乏經驗使用bainary writer.i使用循環將圖像中的每個字節(字節[])轉換爲字符串並插入每個(逗號)之後都有一個符號,然後我用流編寫器發送它,我在服務器端用類似於(imageData.length,244,56,0,0,78,12)的東西,用逗號emmbeded,用dat我cud重新插入每個逗號前的字符串,將其轉換回字節並推送(插入到下一個索引)它在一個新的字節數組中並解碼顏色信息。 – TunapiQ