2013-12-13 52 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