用 go 实现 socket ,帮忙看看问题处在哪里
資深大佬 : awanganddong 13
package main import ( "bytes" "fmt" "net" "time" ) func main() { listener, err := net.Listen("tcp", "127.0.0.1:9527") defer listener.Close() if err != nil { fmt.Printf("server err %vn", err) } else { for { conn, err := listener.Accept() if err == nil { go handleConn(conn) } } } } func Read(conn net.Conn) (string, error) { readBytes := make([]byte, 1) var buf bytes.Buffer for { _, err := conn.Read(readBytes) if err != nil { return "", err } readByte := readBytes[0] if readByte == 't' { break } } return buf.String(), nil } func Write(conn net.Conn, content string) (int, error) { var buf bytes.Buffer buf.WriteString(content) buf.WriteByte('t') return conn.Write(buf.Bytes()) } func handleConn(conn net.Conn) { for { conn.SetReadDeadline(time.Now().Add(2)) if str, err := Read(conn); err == nil { fmt.Printf("收到的数据:%vn", str) Write(conn, "server got:"+str) }else{ fmt.Printf("read err: %vn",err) } } }
现在用 telnet 发送消息,然后报错 read err: read tcp 127.0.0.1:9527->127.0.0.1:56508: i/o timeout
大佬有話說 (12)