为了账号安全,请及时绑定邮箱和手机立即绑定

go:http 服务器在 osx 上不起作用

go:http 服务器在 osx 上不起作用

Go
翻翻过去那场雪 2022-01-04 10:40:27
该示例性的HTTP服务器并不为我工作。源代码:package mainimport (    "fmt"    "net/http")func handler(w http.ResponseWriter, r *http.Request) {    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])}func main() {    http.HandleFunc("/", handler)    http.ListenAndServe("127.0.0.1:8080", nil)}当我尝试连接时,我得到的是:$ curl 127.0.0.1:8080curl: (7) Failed to connect to 127.0.0.1 port 8080: Operation timed out$ nc -v -G 5 127.0.0.1 8080nc: connectx to 127.0.0.1 port 8080 (tcp) failed: Operation timed out虽然 nc 尝试连接 tcpdump 仅显示 SYN 数据包:$ tcpdump -i lo0 port 8080tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes18:21:30.906638 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569352 ecr 0,sackOK,eol], length 018:21:31.006824 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569452 ecr 0,sackOK,eol], length 018:21:31.106989 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569552 ecr 0,sackOK,eol], length 018:21:31.208141 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569653 ecr 0,sackOK,eol], length 018:21:31.308288 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569753 ecr 0,sackOK,eol], length 018:21:31.408336 IP localhost.52799 > localhost.http-alt: Flags [S], seq 3375761924, win 65535, options [mss 16344,nop,wscale 5,nop,nop,TS val 118569853 ecr 0,sackOK,eol], length 0当我运行 nc 时什么也没有出现,所以它甚至没有注意到连接尝试。我没有启用防火墙,其他一切正常,只有 Go 程序有这个问题(特别是我不能使用 docker-machine)我如何解决它?编辑:我假设 #Err35 是:#define EDEADLK     35  /* Resource deadlock would occur */……哇?
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

我想查看“ifconfig -a”的输出。

这闻起来像是本地配置问题;我无法在 OS X 10.11.4, Go 1.6 上重现这个

我的 WAG 是隧道设备实际上使用的是 127.0.0.1 而不是环回设备。


查看完整回答
反对 回复 2022-01-04
?
阿晨1998

TA贡献2037条经验 获得超6个赞

我修好了它!我记得早些时候我试图增加我机器上的连接限制并应用这里描述的更改:https : //apple.stackexchange.com/a/169606


恢复它们解决了这个问题。这就是帮助:


sudo rm /etc/sysctl.conf

sudo sysctl kern.ipc.somaxconn=128

sudo rm /Library/LaunchDaemons/limit.maxproc.plist

sudo rm /Library/LaunchDaemons/limit.maxfiles.plist

顺便说一句:经过更多调查后,我发现:


问题是 accept() 系统调用每次都返回 EAGAIN 但不接受任何连接

对于 C 和 Java 程序中的非阻塞连接,它的行为相同

但我仍然不知道它到底为什么坏了。


查看完整回答
反对 回复 2022-01-04
?
慕容3067478

TA贡献1773条经验 获得超3个赞

我确定你检查过这个,但是你有没有打开数据包过滤(pfctl)或其他一些防火墙?请参阅https://superuser.com/questions/505128/deny-access-to-a-port-from-localhost-on-osx


查看完整回答
反对 回复 2022-01-04
  • 3 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号