套接字编程/通过无线发送二进制图像数据

Posted

技术标签:

【中文标题】套接字编程/通过无线发送二进制图像数据【英文标题】:Socket programming/sending a binary image data over wireless 【发布时间】:2014-01-01 08:58:41 【问题描述】:

如何通过无线发送字节数组 (byte[])?

我目前正在开发一个客户端/服务器聊天应用程序。我已经实现了各种其他功能,例如配置文件管理,但我面临的问题是尝试通过无线发送图像。

我已经知道如何将图像转换为字节格式并从数据库中保存/检索,但是在使用 TCP/IP 发送图像时,它不适用于正在使用的类 (StreamWriter)。

我需要哪些类来发送字节流?不干扰他的个人资料详细信息?

(在我的聊天注册表中) 这是我的算法:连接用户信息,例如他的用户名、密码、位置、性别、状态并嵌入服务器符号,例如(%、^、~、`),以便服务器可以将他的信息分开并将其保存在数据库中。

在我尝试将字节数组(byte[] 即图像数据)与他的信息连接之前,一切正常。

我的解决方案:我将单独发送他的信息,即所有字符串将在一起,当我想将他的个人资料详细信息发送到服务器时,他的图像将独立。

我的课程:我正在使用流 Writer 将用户信息写入服务器。 请给我看一个使用好的类的例子,例如(二进制作家)发送他的个人资料图片。如果我能得到服务器上的二进制代码,我将不胜感激,非常感谢。

【问题讨论】:

StreamWriter 适合写字符串。使用BinaryWriter写入二进制数据。 【参考方案1】:

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 值。

【讨论】:

感谢您的帮助,我很感激,由于我的不耐烦和缺乏使用 bainary writer 的经验,我做了一个算法来解决它。我使用循环来转换图像中的每个字节(字节[]) 字符串并在每个(逗号符号)之后插入一个中断符号,然后我用流写入器发送它,我在服务器端有类似 (imageData.length,244,56,0,0,78,12) 的东西嵌入逗号,使用数据我 cud 在每个逗号之前重新插入字符串,将其转换回字节并将其推送(插入下一个索引)到一个新的字节数组中并解码颜色信息。

以上是关于套接字编程/通过无线发送二进制图像数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 C 中的 HTTP POST 请求发送图像或二进制数据

使用异步套接字编程发送二进制数据并读取其值

如何通过 Java 中的套接字编程将发布数据(包含 2 个参数)发送到 https 服务器

将数据从服务器发送到客户端套接字编程

套接字编程:在 UDP 上发送数据包(C++)

android - LAN 套接字编程 - 获取空指针和地址使用异常