Unix Socket 返回 ECONNRESET,服务器甚至不接受停止阻塞
Unix Socket returns ECONNRESET, and server doesn't even get accept to stop blocking
所以,我正在使用Unix套接字,它们在一段时间内运行良好。现在当我连接时,我得到一个ECONNRESET
&服务器的accept甚至不会停止阻塞。接受代码:
socklen_t slt = sizeof(sun);
int i = accept(sockfd, (struct sockaddr *)&sun, &slt);
读取代码:
jbyte* ra = malloc(size);
memset(ra, 0, size);
int i = read(sockfd, ra, size);
还有很多,但这都是通过JNI实现的。我已经通过调试验证了accept正在挂起,套接字正在侦听等。我也证实了他们从未停止封锁。此外,我做一个写,然后当我试图读,我得到一个ECONNRESET
。我的服务器以非特权用户运行,而我的客户端以root用户运行。
套接字文件(s,有两种情况),来自ls -la
:
srwxr-xr-x 1 ap_6840 ap_6840 0 May 21 22:52 .api.sock
srwxr-xr-x 1 ap_6840 ap_6840 0 May 21 22:52 .http.sock
因此,它们被创建,监听等等。如果你想要更多的代码,告诉我。
编辑:连接代码:
struct sockaddr_un sun;
sun.sun_family = AF_UNIX;
strncpy(sun.sun_path, npath, 108);
int i = connect((int)sockfd, (struct sockaddr *)&sun, sizeof(sun));
,其中npath是我的文件。整个C文件:https://github.com/JavaProphet/Avuna-HTTPD/blob/master/csrc/org_avuna_httpd_util_CLib.c
Java代码将它们捆绑在一起:https://github.com/JavaProphet/Avuna-HTTPD/tree/master/src/org/avuna/httpd/util/unixsocket
问题是我的控制台隐藏在两个父进程下,所以我从来没有看过它。
相关文章:
- 为什么模板类中的对象不能返回值
- C++Brute Force攻击函数不会返回结果
- 我可以使用什么来停止循环而不是"返回 0"?
- 在 C++ 中访问数组负索引处的内存不会返回垃圾
- 为什么线程不接受此输入?
- 函数不接受 X 参数,函数使用默认参数
- C++ boost::asio::ip::tcp::acceptor 有时不接受连接器?
- 从 cin 读取不会返回整个输入字符串
- GetTokenInformation 在非提升时不会返回所有特权的雕像
- B不接受8作为输入的是什么?C++
- C++数组输入不接受一定数量的整数
- C++概念assignable_from不接受 const&-return 运算符=
- 为什么我不能返回带有透明函子的法线映射引用?
- 在 Linux 中关闭 UDP 套接字后,recv 不会返回
- 斯堪夫不接受输入
- 确定工厂方法返回的对象类(错误:函数不接受 1 个参数
- 我在我的程序中添加了一个void函数,它不接受任何参数,现在我的程序在运行时只返回一个空白终端
- 当C++调用python时,不接受返回值
- 为什么随机访问迭代器的算术运算符接受/返回 int 而不是 size_t?
- Unix Socket 返回 ECONNRESET,服务器甚至不接受停止阻塞