jjzjj

PipeReader

全部标签

c# - 在 .NET 中通过 PipeReader 读取 SSL

目前,我通过使用SSL流实现了一个有效的实现,封装在缓冲流中,并且只使用字节数组在流上调用读/写。我想让它更快,从一些阅读来看,System.IO.Pipelines似乎是实现高性能IO的方式。我读过的很多文章/演示仅演示了直接使用套接字的代码——这似乎对我不起作用,因为我使用的是SSL。我发现了一些从流中获取管道读取器/写入器的扩展>Stream.UsePipeReader()或Stream.UsePipeWriter()所以我尝试调用SSLStream.UsePipeReader()但是我总是得到错误:System.NotSupportedException:TheReadAsyn

go - 为什么我从我的 io.PipeReader 中得到一个 EOF?

我在一个项目中使用了类似的东西,我有点困惑:为什么什么都没有打印出来?packagemainimport("fmt""encoding/json""io")funcmain(){m:=make(map[string]string)m["foo"]="bar"pr,pw:=io.Pipe()gofunc(){pw.CloseWithError(json.NewEncoder(pw).Encode(&m))}()fmt.Fscan(pr)}https://play.golang.org/p/OJT1ZRAnut这是某种竞争条件吗?我尝试删除pw.CloseWithError但它没有任何改变

go - 为什么我从我的 io.PipeReader 中得到一个 EOF?

我在一个项目中使用了类似的东西,我有点困惑:为什么什么都没有打印出来?packagemainimport("fmt""encoding/json""io")funcmain(){m:=make(map[string]string)m["foo"]="bar"pr,pw:=io.Pipe()gofunc(){pw.CloseWithError(json.NewEncoder(pw).Encode(&m))}()fmt.Fscan(pr)}https://play.golang.org/p/OJT1ZRAnut这是某种竞争条件吗?我尝试删除pw.CloseWithError但它没有任何改变

go - 从 io.PipeReader 读取与写入 io.PipeWriter 不匹配

运行这个程序:onplay.golang.orgpackagemainimport("bytes""fmt""io")funcmain(){r,w:=io.Pipe()gofunc(){deferw.Close()in:='a'//singlequotefmt.Println("writing:",in)fmt.Fprint(w,in)}()deferr.Close()buf:=new(bytes.Buffer)buf.ReadFrom(r)fmt.Print("read:",buf.Bytes())}这个输出:writing:97read:[5755]当我执行in:="a"或fmt.

go - 从 io.PipeReader 读取与写入 io.PipeWriter 不匹配

运行这个程序:onplay.golang.orgpackagemainimport("bytes""fmt""io")funcmain(){r,w:=io.Pipe()gofunc(){deferw.Close()in:='a'//singlequotefmt.Println("writing:",in)fmt.Fprint(w,in)}()deferr.Close()buf:=new(bytes.Buffer)buf.ReadFrom(r)fmt.Print("read:",buf.Bytes())}这个输出:writing:97read:[5755]当我执行in:="a"或fmt.

go - 包装 io.PipeReader 以存储进度

我想在io.Pipe中跟踪进度。我想到了以下结构ProgressPipeReader,它包装了io.PipeReader,将进度以字节为单位存储在ProgressPipeReader.progress中:typeProgressPipeReaderstruct{io.PipeReaderprogressint64}func(pr*ProgressPipeReader)Read(data[]byte)(int,error){n,err:=pr.PipeReader.Read(data)iferr==nil{pr.progress+=int64(n)}returnn,err}不幸的是,我似