sockets - io.复制: How to know if a socket is closed or disconnected

标签 sockets go

我有一个简单的程序,它将程序的 stdin、stdout 和 stderr 连接到一个套接字,就像这样,

go func() {
    defer conn.Close();
    defer stdin.Close();

    io.Copy(stdin, conn);
}();

go func() {
    defer conn.Close();
    defer stdout.Close();
    defer stderr.Close();

    io.Copy(conn, stdout);
    io.Copy(conn, stderr);
}();

select{}

我有两个问题,

  1. 我必须通过执行 select{}
  2. 让这两个 goroutine 保持运行
  3. 当套接字断开连接时,无法通知它。如果发生这种情况,我需要终止 select{} 循环。

有什么想法吗?

最佳答案

如果连接关闭,io.Copy()会返回(0, io.EOF),所以你可以查看。

关于sockets - io.复制: How to know if a socket is closed or disconnected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42945086/

相关文章:

google-app-engine - 在 Google App Engine 上解析多部分表单

go - 将 JSON 公钥/私钥对转换为 rsa.PrivateKey 和 rsa.PublicKey

java - 我无法从服务器端套接字读取

iphone - 如何在后台保持VOIP套接字连接?

c# - C#套接字(TCP和UDP)

go - 没有 fmt.Print() 就不会发生光标移动

mysql - 如何连接docker与compose、mysql、golang

go - 使用/不使用 make 创建 map

C并发UDP套接字,奇怪的段错误

c# - 使用C#隧道HTTP,HTTPS和DNS