io.Copy:如何知道套接字是关闭还是断开连接

时间:2017-03-22 07:17:26

标签: 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{}循环。
  4. 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果关闭,io.Copy()将返回(0, io.EOF),您可以查看。