首页  > 教育解读  > 如何收发二进制数据

如何收发二进制数据

2025-05-06 11:05:22
花开花落
花开花落已认证

花开花落为您分享以下优质知识

收发二进制数据可通过多种方式实现,以下是主要方法及示例:

一、串口通讯(C/C++)

使用`Read`和`Write`方法发送接收任意类型数据。例如:

```cpp

char a = "Hello";

YbCommDevice1->

Write(a, 10); // 发送字符数组

```

需注意处理数据类型转换(如十六进制转二进制)。

二、WebSocket通信(Javascript)

通过`ArrayBuffer`和`Uint8Array`发送二进制数据:

```javascript

const socket = new WebSocket('ws://localhost:8080');

socket.onopen = function() {

const buffer = new ArrayBuffer(8);

const view = new Uint8Array(buffer);

view = 1; view = 2;

socket.send(buffer);

};

```

接收时同样使用`ArrayBuffer`解析二进制数据。

三、XMLHttpRequest(Javascript)

GET请求:设置`responseType="arraybuffer"`获取二进制数据

```javascript

var xhr = new XMLHttpRequest();

xhr.open("GET", url, true);

xhr.responseType = "arraybuffer";

xhr.onload = function() {

var arrayBuffer = xhr.response;

var byteArray = new Uint8Array(arrayBuffer);

// 处理数据

};

xhr.send();

```

POST请求:需将二进制数据转换为`Blob`或`ArrayBuffer`后发送

```javascript

var blob = new Blob(['abc123'], {type: 'text/plain'});

xhr.send(blob);

```

四、PHP接收二进制数据

通过`php://input`:适用于非文件上传的二进制流

```php

$data = file_get_contents('php://input');

// 处理数据

```

通过`$_FILES`:接收文件上传的二进制数据

```php

$fileData = $_FILES['file']['tmp_name'];

// 处理文件

```

五、C接收二进制数据

通过WebSocket接收时,需处理`Blob`类型数据:

```csharp

socket.onmessage = function(evt) {

if (evt.data instanceof Blob) {

using (var reader = new StreamReader(evt.data)) {

string str = reader.ReadToEnd();

// 处理字符串

}

}

};

```

注意事项:不同协议对二进制数据处理有特定要求,例如WebSocket需注意数据频率避免丢包,串口需处理数据格式转换等。