【发布时间】:2011-03-11 16:11:20
【问题描述】:
我正在尝试使用连接到 C 中的远程服务器的 API,但我一直收到以下错误消息:
log_message: 15:13:19.489 I [ap:1388] Connecting to AP A3.spotify.com:4070
log_message: 15:13:19.490 E [ap:1324] AP Socket Error: Hostname not found (11001)
log_message: 15:13:19.491 E [ap:3396] Connection error: 4
log_message: 15:13:19.491 I [ap:1388] Connecting to AP A1.spotify.com:80
正如您在日期中看到的那样,错误消息是即时的,所以我认为某些东西在我的计算机上本地阻止了这些消息。
这是我用 Wireshark 捕获的 TCP 流:
30 1.682802 MyLocalIp 193.182.8.15 HTTP Continuation or non-HTTP traffic
31 1.702236 193.182.8.15 MyLocalIp HTTP Continuation or non-HTTP traffic
33 1.901706 MyLocalIp 193.182.8.15 TCP 50222 > http [ACK] Seq=12 Ack=12 Win=251 Len=0
因此,根据 Wireshark 的说法,我的计算机发送的第一条消息的 Header 校验和不正确。
我知道主机是正确的,因为当我在 Java 中使用相同的 C API 和 JNA 时,我得到以下结果:
log_message() called:15:46:48.718 I [ap:1388] Connecting to AP A1.spotify.com:4070
log_message() called:15:46:53.769 E [ap:1324] AP Socket Error: Undefined Error 0x4E20 (20000)
log_message() called:15:46:53.770 E [ap:3396] Connection error: 117
log_message() called:15:46:53.770 I [ap:1388] Connecting to AP A2.spotify.com:80
log_message() called:15:46:53.789 I [ap:938] Connected to AP: 193.182.8.12:80
所以,这里在4070端口连接失败,这是正常的,因为被公司的防火墙阻止了,然后在80端口连接成功。
这里是 Java 版本的 Wireshark 捕获:
104 6.296125 MyLocalIp 193.182.8.15 TCP 50339 > http [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=8 SACK_PERM=1
107 6.575599 193.182.8.15 MyLocalIp TCP http > 50339 [SYN, ACK] Seq=0 Ack=1 Win=5840 Len=0 MSS=1460 SACK_PERM=1 WS=7
108 6.575732 MyLocalIp 193.182.8.15 TCP 50339 > http [ACK] Seq=1 Ack=1 Win=65536 Len=0
109 6.582627 MyLocalIp 193.182.8.15 HTTP Continuation or non-HTTP traffic
110 6.614789 193.182.8.15 MyLocalIp TCP http > 50339 [ACK] Seq=1 Ack=512 Win=6912 Len=0
112 6.714201 193.182.8.15 MyLocalIp HTTP Continuation or non-HTTP traffic
113 6.722057 MyLocalIp 193.182.8.15 HTTP Continuation or non-HTTP traffic
115 6.746484 193.182.8.15 MyLocalIp TCP http > 50339 [ACK] Seq=500 Ack=677 Win=8064 Len=0
116 6.750938 193.182.8.15 MyLocalIp HTTP Continuation or non-HTTP traffic
117 6.751093 MyLocalIp 193.182.8.15 HTTP Continuation or non-HTTP traffic
118 6.985366 193.182.8.15 MyLocalIp HTTP [TCP Retransmission] Continuation or non-HTTP traffic
119 6.985416 MyLocalIp 193.182.8.15 TCP [TCP Dup ACK 117#1] 50339 > http [ACK] Seq=787 Ack=544 Win=65024 Len=0 SLE=500 SRE=544
121 7.013666 193.182.8.15 MyLocalIp HTTP Continuation or non-HTTP traffic
124 7.213661 MyLocalIp 193.182.8.15 TCP 50339 > http [ACK] Seq=787 Ack=1803 Win=65536 Len=0
132 7.703708 MyLocalIp 193.182.8.15 HTTP [TCP Retransmission] Continuation or non-HTTP traffic
133 7.721265 193.182.8.15 MyLocalIp HTTP Continuation or non-HTTP traffic
我尝试在我的 System32/drivers/etc/hosts 文件中为主机名 A1.spotify.com、A2.spotify.com 和 A3.spotify.com 添加 IP 193.182.8.15,但没有任何改变。
我关闭了 Windows 防火墙和防病毒软件,也没有用。
我尝试在没有公司代理和防火墙的情况下在家中运行它,但它是相同的(除了在 Java 版本上该服务能够连接到端口 4070)
有什么想法吗?
谢谢!
【问题讨论】:
标签: c windows sockets networking dns