windows - "ConnectEx tcp: The semaphore timeout period has expired."是什么意思

标签 windows tcp go

我写了一个简单的 go 程序,它在 windows 上运行并测试远程端口是否处于事件状态:

package main
import (
    "fmt"
    "net"
)

func main(){
    conn, err := net.Dial("tcp", "192.168.23.191:3403")
    if err != nil {
        fmt.Println(err)
    } else {
        conn.Close()
    }
}  

现在,远程端口已关闭。第一次运行,报错:

dial tcp 192.168.23.191:3403: ConnectEx tcp: The remote computer refused the network connection.  

然后我继续运行,报错改为:

dial tcp 192.168.23.191:3403: ConnectEx tcp: The semaphore timeout period has expired.

为什么 Dial 返回“ConnectEx tcp:信号量超时期限已过期。”?这个错误是什么意思?

最佳答案

net.Dial() 的调用超时。

如图所示 here , Dialer 结构有一个 Timeout 字段定义 Dial() 等待连接的最长时间完成

关于windows - "ConnectEx tcp: The semaphore timeout period has expired."是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163635/

相关文章:

go - 将项目附加到函数中的 slice 不会改变原始 slice

go - 如果不对结果做任何改变,为什么我们在下面的脚本中添加&?

c - Data::Dumper 中是否有相当于 Perls 的 Dumper() 方法的 C 语言?

c - 我使用代码块编写了一个单线程程序,但在任务管理器中它显示该程序正在使用 2 个线程?

sockets - lua nginx 模块中提到的 TCP 套接字是什么?

c - 在 Tshark 中检查数据包时出现伪造的 TCP header 长度

go - kafka_exporter 不适用于计算实例

windows - Azure Web 平台安装程序 cmdline 无法下载预定义源

windows - 在批处理文件的参数中转义“、<、>、>> 或 | 等字符

c++ - 编写类似netstat的程序