gpt4 book ai didi

c - 某些 OSX 会阻止对端口 80 的套接字调用,直到完成 HTTP 请求

转载 作者:行者123 更新时间:2023-11-30 17:29:58 26 4
gpt4 key购买 nike

某些 osx 会阻止我在端口 80 上的套接字调用,直到我编写完整的 HTTP 请求。如何禁用此功能或错误?

这是一段简单的c代码,它通过80端口写入数据;

int main() {
int port = 80;
char *content = "hello world";
int fd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;
server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(port);
if (connect(fd, (struct sockaddr *)&server, sizeof(server)) == 0) {
printf("connect ok\n");
write(fd, content, strlen(content));
} else {
printf("connect fail\n");
}
return 0;
}

我在几台 Mac 上运行此代码,没有进程监听端口 80。在某些 Mac 中,它仍然会打印“connect ok”,但 tcpdump 的屏幕上没有显示任何内容。

我尝试了不同的参数,并意识到 OSX 将通过端口 80 的数据视为 HTTP 数据。它将“保留”我的系统调用,除非我的数据包含字符串“HTTP/”和“\r\n\r\n”。它在端口 8080 上执行相同的操作。

这是在Mac中测试“功能”存在的结果。(没有服务器正在监听端口 80 或 8080)

|port      |    content                  | binary output |          tcpdump output      |
|:--------:|:---------------------------:|:-------------:|:-----------------------------|
| 80/8080 | hello | connect ok | nothing |
| 80/8080 |GET HTTP/1.1 \r\n\r\n | connect ok |client send syn packet, server reply with reset packet|
| 12345 | any data | connect fail |syn and reset packet |
| 80/8080 |lkfjHTTP/dsfkj\r\n\r\na.dkjfk| connect ok |syn and reset packet |

我猜这是一个提高 HTTP 客户端性能的内置策略。但是我在端口 80 上使用 spdy 协议(protocol)传输二进制数据,如何禁用此功能?

我用谷歌搜索了几天,但还没有找到任何东西。

我不可能是第一个在 OSX 中的 80 端口上传输非 HTTP 协议(protocol)的人:(

最佳答案

找到"local acwebsecagent[156]: Connection : HTTP/ *NOT* FOUND. CMode : 0 TMode : 0
"
连接80和8080端口时登录/var/log/system.log

acwebsecagent是Cisco AnyConnect Web安全模块,在我卸载了愚蠢的安全模块后,它终于可以工作了。

卸载它。运行sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

相关链接:http://blog.felipe-alfaro.com/2014/02/10/cisco-anyconnect-web-security-module-acwebsecagent-in-mac-os-x/ http://www.cisco.com/c/en/us/td/docs/security/vpn_client/anyconnect/anyconnect30/administration/guide/anyconnectadmin30/ac06websecurity.html#pgfId-1065063

关于c - 某些 OSX 会阻止对端口 80 的套接字调用,直到完成 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com