我正在尝试学习Go语言,并且正在编写一个简单的回显服务器。不过,我很难使它正常工作。func listen(server string) { var buf []byte listener, ok := net.Listen("tcp", server) if ok != nil { fmt.Fprintf(os.Stderr, "Could not listen on socket: %s\n", ok.String()) return } conn, ok := listener.Accept() if ok != nil { fmt.Fprintf(os.Stderr, "Could not accept connection on socket: %s\n", ok.String()) return } writelen, ok := conn.Write(strings.Bytes("Ready to receive\n")) if ok != nil { fmt.Fprintf(os.Stderr, "Could not write to socket: %s\n", ok.String()) } else { fmt.Printf("Wrote %d bytes to socket\n", writelen) } for ;; { readlen, ok := conn.Read(buf) if ok != nil { fmt.Fprintf(os.Stderr, "Error when reading from socket: %s\n", ok.String()) return } if readlen == 0 { fmt.Printf("Connection closed by remote host\n") return } fmt.Printf("Client at %s says '%s'\n", conn.RemoteAddr().String(), buf) }}我从此函数获得以下输出:[nathan@ebisu ~/src/go/echo_server] ./6.out 1234Using port 1234Wrote 17 bytes to socketError when reading from socket: EOF这是我在客户端上看到的:[nathan@ebisu ~] telnet 127.0.0.1 1234Trying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.Ready to receiveConnection closed by foreign host.任何帮助将不胜感激(或指向资源的指针;套接字API上的go文档尚有待改进)。
- 2 回答
- 0 关注
- 245 浏览
添加回答
举报
0/150
提交
取消