C++实现TCP连接使用JSON传输和接受数据
时间: 2024-01-21 12:16:15 浏览: 723
实现TCP连接使用JSON传输和接收数据,可以分为以下几个步骤:
1. 创建TCP连接
使用C++的socket库,创建TCP连接。示例代码如下:
```c++
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <iostream>
using namespace std;
int main() {
int client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (client_socket == -1) {
cout << "create socket error" << endl;
return -1;
}
sockaddr_in server_addr{};
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8000);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
int ret = connect(client_socket, (sockaddr *) &server_addr, sizeof(server_addr));
if (ret == -1) {
cout << "connect error" << endl;
return -1;
}
cout << "connect success" << endl;
close(client_socket);
return 0;
}
```
2. 发送JSON数据
使用C++的json库,将需要发送的数据转换为JSON格式,并发送到服务器。示例代码如下:
```c++
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
// 创建socket,建立连接,省略代码
// ...
// 构建JSON数据
json data = {
{"name", "张三"},
{"age", 18},
{"email", "zhangsan@qq.com"}
};
// 将JSON数据转换为字符串
std::string str = data.dump();
// 发送数据
int len = send(client_socket, str.c_str(), str.length(), 0);
if (len == -1) {
cout << "send error" << endl;
return -1;
}
// 关闭socket,省略代码
// ...
}
```
3. 接收JSON数据
从服务器接收JSON数据,首先需要确定数据的长度,然后根据长度接收数据,最后将数据转换为JSON格式。示例代码如下:
```c++
#include <nlohmann/json.hpp>
using json = nlohmann::json;
int main() {
// 创建socket,建立连接,省略代码
// ...
// 接收数据长度
int data_len = 0;
int ret = recv(client_socket, &data_len, sizeof(data_len), 0);
if (ret <= 0) {
cout << "recv error" << endl;
return -1;
}
// 根据数据长度接收数据
char *buf = new char[data_len + 1];
memset(buf, 0, data_len + 1);
ret = recv(client_socket, buf, data_len, 0);
if (ret <= 0) {
cout << "recv error" << endl;
delete[] buf;
return -1;
}
// 将接收到的数据转换为JSON格式
json data = json::parse(buf);
// 处理接收到的数据
cout << "name: " << data["name"] << endl;
cout << "age: " << data["age"] << endl;
cout << "email: " << data["email"] << endl;
// 关闭socket,省略代码
// ...
}
```
以上就是实现TCP连接使用JSON传输和接收数据的基本步骤。需要注意的是,发送和接收的数据格式需要保持一致,否则无法正确解析数据。另外,在实际应用中,还需要考虑数据的加密和压缩等问题。
阅读全文