收发二进制数据可通过多种方式实现,以下是主要方法及示例:
一、串口通讯(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需注意数据频率避免丢包,串口需处理数据格式转换等。