c++ socket send json

在 C++ 中使用 socket 发送 JSON 数据,需要先将 JSON 数据转换为字符串,然后可以使用 send() 函数发送字符串数据。

如果您使用的是 C++11 及以上版本,可以使用内置的 json 库,例如 nlohmann/json,它提供了方便的 API 来处理 JSON 数据。

以下是一个示例代码:

#include <iostream>
#include <string>
#include <nlohmann/json.hpp>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
using json = nlohmann::json;
int main() {
  int sock = socket(AF_INET, SOCK_STREAM, 0);
  if (sock == -1) {
    std::cerr << "Failed to create socket" << std::endl;
    return 1;
  struct sockaddr_in server_address;
  server_address.sin_family = AF_INET;
  server_address.sin_port = htons(1234);
  inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr);
  int connect_result = connect(sock, (struct sockaddr *) &server_address, sizeof(server_address));
  if (connect_result == -1) {
    std::cerr << "Failed to connect to server" << std::endl;
    return 1;
  json data = {
    {"key1", "value1"},
    {"key2", 123}
  std::string data_str = data.dump();
  int sent_bytes = send(sock, data_str.c_str(), data_str.size(), 0);
  if (sent_bytes == -1) {
    std::cerr << "Failed to send data" << std::endl;
    return 1;
  close(sock);
  return 0;

希望这对您有所帮助。

  •