以下是go、python的示例代碼
- server.py:
import socket
import json
# 服務(wù)器配置
HOST = '127.0.0.1' # 服務(wù)器的IP地址
PORT = 12345 # 選擇一個空閑端口
# 創(chuàng)建一個TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen()
print(f"服務(wù)器正在監(jiān)聽 {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數(shù)據(jù)
data = receive_large_data(client_socket)
json_data = json.loads(data.decode('utf-8'))
print("接收到的JSON數(shù)據(jù):", json_data)
# 關(guān)閉連接
client_socket.close()
server_socket.close()
- client.go:
package main
import (
"encoding/json"
"fmt"
"net"
"strings"
)
func main() {
// 服務(wù)器配置
serverAddr := "127.0.0.1:12345"
// 連接服務(wù)器
conn, err := net.Dial("tcp", serverAddr)
if err != nil {
fmt.Println("無法連接到服務(wù)器:", err)
return
}
defer conn.Close()
fmt.Printf("已連接到服務(wù)器 %s\n", serverAddr)
// 準備要發(fā)送的JSON數(shù)據(jù)
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
}
// 發(fā)送JSON數(shù)據(jù)
_, err = conn.Write(jsonData)
if err != nil {
fmt.Println("發(fā)送JSON數(shù)據(jù)失敗:", err)
return
}
fmt.Printf("序列化后的 JSON 數(shù)據(jù)的字節(jié)大小: %d\n", len(jsonData))
}