Feat: done tcp

This commit is contained in:
2025-11-10 10:02:55 +08:00
parent 78d89595a1
commit 9a39bcda40
17 changed files with 689 additions and 0 deletions

45
tcp/client.go Normal file
View File

@@ -0,0 +1,45 @@
package tcp
import (
"encoding/json"
"net"
)
func Do(addr, route string, method Method, body []byte) ([]byte, error) {
conn, err := net.Dial("tcp", addr)
if err != nil {
return []byte{}, err
}
defer conn.Close()
header := RequestHeader{
Method: method,
Route: route,
}
rawHeader, err := json.Marshal(header)
if err != nil {
return []byte{}, err
}
if err := sendFrame(conn, rawHeader); err != nil {
return []byte{}, err
}
if err := sendFrame(conn, body); err != nil {
return []byte{}, err
}
b, err := readFrame(conn)
if err != nil {
return []byte{}, err
}
return b, nil
}
func Get(addr, route string) ([]byte, error) {
return Do(addr, route, MethodGET, []byte{})
}
func Post(addr, route string, b []byte) ([]byte, error) {
return Do(addr, route, MethodPOST, b)
}