不同语言互传json数据

以下是gopython的示例代码

  1. server.py:
import socket
import json

# 服务器配置
HOST = '127.0.0.1'  # 服务器的IP地址
PORT = 12345         # 选择一个空闲端口

# 创建一个TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen()

print(f"服务器正在监听 {HOST}:{PORT}...")


def receive_large_data(client_socket):
    data = b''
    while True:
        chunk = client_socket.recv(1024)
        if not chunk:
            break
        data += chunk
    return data


# 等待客户端连接
client_socket, client_address = server_socket.accept()
print(f"已连接到客户端 {client_address}")

# 接收JSON数据
data = receive_large_data(client_socket)
json_data = json.loads(data.decode('utf-8'))
print("接收到的JSON数据:", json_data)

# 关闭连接
client_socket.close()
server_socket.close()
  1. client.go:
package main

import (
    "encoding/json"
    "fmt"
    "net"
    "strings"
)

func main() {
    // 服务器配置
    serverAddr := "127.0.0.1:12345"

    // 连接服务器
    conn, err := net.Dial("tcp", serverAddr)
    if err != nil {
        fmt.Println("无法连接到服务器:", err)
        return
    }
    defer conn.Close()

    fmt.Printf("已连接到服务器 %s\n", serverAddr)

    // 准备要发送的JSON数据
    dataToSend := map[string]interface{}{
        "name": "Alice",
        "age":  25,
        "city": strings.Repeat("Wonderland ", 1000),
    }
    jsonData, err := json.Marshal(dataToSend)
    if err != nil {
        fmt.Println("JSON编码失败:", err)
        return
    }

    // 发送JSON数据
    _, err = conn.Write(jsonData)
    if err != nil {
        fmt.Println("发送JSON数据失败:", err)
        return
    }
    fmt.Printf("序列化后的 JSON 数据的字节大小: %d\n", len(jsonData))
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:https://www.ardanlabs.com/blog/2020/06/python-go-grp...
    豆腐匠阅读 612评论 0 0
  • 简介 Apache Thrift是一个软件框架,用来进行可扩展跨语言的服务开发,结合了软件堆栈和代码生成引擎,用来...
    birjemin阅读 1,012评论 0 1
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,631评论 1 118
  • 一、互联网协议介绍 互联网的核心是一系列协议,总称为”互联网协议”(Internet Protocol Suite...
    Benedict清水阅读 127评论 0 0
  • 快速开始 在安装Sanic之前,让我们一起来看看Python在支持异步的过程中,都经历了哪些比较重大的更新。 首先...
    hugoren阅读 19,740评论 0 23