官方文档就说了
func Pipe() (Conn, Conn)
Pipe创建一个内存中的同步、全双工网络连接。连接的两端都实现了Conn接口。一端的读取对应另一端的写入,直接将数据在两端之间作拷贝;没有内部缓冲。
具体这个是怎么用啊?起什么作用?
官方文档就说了
func Pipe() (Conn, Conn)
Pipe创建一个内存中的同步、全双工网络连接。连接的两端都实现了Conn接口。一端的读取对应另一端的写入,直接将数据在两端之间作拷贝;没有内部缓冲。
具体这个是怎么用啊?起什么作用?
net.Pipe()是socket单元测试非常好的方案,不会占用本机端口,直接模拟socket两端操作,不需要Dial/Listen/Accept。
stackoverflow中的相关网页如下:
https://stackoverflow.com/que...
代码片断如下:
client, server := net.Pipe()
defer client.Close()
defer server.Close()
// server receive and response
go func() {
............
}()
// client => server
7 回答5.4k 阅读
6 回答6.9k 阅读✓ 已解决
4 回答2.4k 阅读
1 回答3.4k 阅读
2 回答939 阅读✓ 已解决
2 回答2.3k 阅读
1 回答2.2k 阅读
可以参考io下的Pipe(), io下的Pipe()是单向的,一端的读取匹配另一端的写入,直接在这两端之间复制数据。而net下的Pipe()是双向的,也就是说返回的Conn既可以读也可以写,通常用于不同区域的代码之间相互传递数据。