不同語言 (C++、Java、Python、Go) 通過 Socket 通信,如何保證數據格式一致?
雙方約定 **二進制/文本協議格式**,包括:
.proto 文件定義消息結構,各語言生成代碼。message.proto。protoc --java_out=... --cpp_out=... --python_out=... message.proto 生成代碼。serializeToString → 發送長度 + 數據。parseFromString → 獲取對象。syntax = "proto3";
package com.example;
message Request {
int64 request_id = 1;
string action = 2;
map<string, string> params = 3;
}
message Response {
int64 request_id = 1;
int32 code = 2;
string message = 3;
bytes data = 4;
}
**「改格式」即定義統一的 IDL 並用成熟序列化庫**,而非手寫解析。Protobuf 是首選,JSON 適合調試/Web 互操作。