【发布时间】:2021-08-28 00:21:51
【问题描述】:
我在 Go 中有以下客户端和服务器:
客户:
package main
import (
"bytes"
"encoding/binary"
"fmt"
"io"
"net"
)
func main() {
var num1 int
buf := new(bytes.Buffer)
fmt.Scanln(&num1)
fmt.Printf("I'm the client, your input was the number: %d", num1)
//escribir el numero a b, el buffer
err := binary.Write(buf, binary.LittleEndian, num1)
//Llama al server
conn, err := net.Dial("tcp", "localhost:9000")
if err != nil {
panic(err)
}
//Escribe buffer a la conexion
buf.WriteTo(conn)
//Cierra la conexión
defer conn.Close()
//Lee la conexión y la imprime
bs, _ := io.ReadAll(conn)
fmt.Println(string(bs))
}
服务器:
package main
import (
"encoding/binary"
"fmt"
"io"
"net"
)
func main() {
//Escuchar un request
ln, err := net.Listen("tcp", ":9000")
if err != nil {
panic(err)
}
defer ln.Close()
var num int
for {
//Recibir un request
conn, err := ln.Accept()
if err != nil {
panic(err)
}
err = binary.Read(conn, binary.LittleEndian, &num)
io.WriteString(conn, fmt.Sprintf("I'm the server, the number I received is: ", num))
conn.Close()
}
}
我的服务器正在发回消息,但显然它收到的是 0 而不是用户输入的数字。看起来这应该是一件简单的事情,但我想不通。
我不确定我是否正在尝试正确的实现来做到这一点。有没有更好的办法?如果没有,为什么我的服务器没有正确接收 int?
【问题讨论】: