最近在写 go 练手,前两天在看知乎一帖子 golang 实现内网穿透 跑代码发现 windows 跑的 client 没问题 mac 上面运行 client io.Copy 方法卡住 io.Copy 做的操作是并发执行两个 tcp 链接的拷贝工作 类似同时执行两个 io.Copy(local, remote) 卡在这里,也没有 error 输出 直到 tcp 断了才报错 有大佬知道是为啥么
最近在写 go 练手,前两天在看知乎一帖子 golang 实现内网穿透 跑代码发现 windows 跑的 client 没问题 mac 上面运行 client io.Copy 方法卡住 io.Copy 做的操作是并发执行两个 tcp 链接的拷贝工作 类似同时执行两个 io.Copy(local, remote) 卡在这里,也没有 error 输出 直到 tcp 断了才报错 有大佬知道是为啥么
1
lwch Jan 7, 2021
go 里的所有 io.Read 和 io.Write 操作都是阻塞操作,因为需要让出时间片给别的协程调度
|
2
xkeyideal Jan 7, 2021
go io.Copy(local, remote)
go io.Copy(remote, local) |
3
xmf1234321 OP @lwch 大概明白您说的意思 但是不会改 哈哈
|
4
xmf1234321 OP @xkeyideal 嗯呢 就是这样写的 但是都执行不下去 windows 没问题
|
5
xkeyideal Jan 7, 2021
@xmf1234321 那就只能看代码了
|