在连接关闭之前,请不要写出TCPConn数据

时间:2017-10-02 14:31:35

标签: go tcp

我正在写一个"二进制回声服务器"我已经尝试了几种方法来连续读取连接中的二进制数据并将数据回送回来,并且无论出于何种原因,在写入数据时,在连接关闭之前它都没有到达另一端。这是连接的处理程序方法。正如您所看到的,我尝试逐字节读取(在使用io.Copy()的其他几次尝试失败后。

func handle_relay_connection(instance *ServerInstance, conn *net.TCPConn) {
    var err error
    var b byte

    defer conn.Close()

    reader := bufio.NewReader(conn)
    writer := bufio.NewWriter(conn)

    for run_loop := true; run_loop; {
            b, err = reader.ReadByte()

            if err != nil {
                    if err != io.EOF {
                            logError("Problem reading data from connection %s: %v", instance.address, err)
                    } else {
                            logWarning("Client %s ended connection: %v", instance.address, err)
                    }

                    run_loop = false
            }
            writer.WriteByte(b)
            writer.Flush()
    }
}

0 个答案:

没有答案