C++实现TCP连接传输JSON字符
时间: 2023-11-30 20:04:11 浏览: 175
要实现TCP连接传输JSON字符,可以使用C++中的socket编程。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <json/json.h>
using namespace std;
int main() {
// 创建socket
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
cerr << "socket creation failed" << endl;
return -1;
}
// 服务器地址和端口号
string ip = "127.0.0.1";
int port = 8888;
// 初始化服务器地址
struct sockaddr_in serverAddr;
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = inet_addr(ip.c_str());
serverAddr.sin_port = htons(port);
// 连接服务器
if (connect(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == -1) {
cerr << "connect failed" << endl;
close(sock);
return -1;
}
// 准备要发送的JSON数据
Json::Value data;
data["name"] = "John";
data["age"] = 28;
data["gender"] = "male";
string jsonStr = data.toStyledString();
// 发送JSON数据
const char* msg = jsonStr.c_str();
int len = strlen(msg);
if (send(sock, msg, len, 0) != len) {
cerr << "send failed" << endl;
close(sock);
return -1;
}
// 关闭socket
close(sock);
return 0;
}
```
代码中使用了Jsoncpp库来生成JSON字符串,如果没有安装该库,可以通过以下命令进行安装:
```bash
sudo apt-get install libjsoncpp-dev
```
该示例代码连接了本地IP为127.0.0.1,端口号为8888的服务器,并发送了一个包含姓名、年龄和性别的JSON数据。在实际应用中,需要根据实际情况进行修改。
阅读全文