在基于Android和iOS的应用程序上工作,该应用程序需要与在同一设备中运行的服务器进行通信.目前使用TCP环回连接与App和Server通信(用户层编写的应用程序,使用Android NDK用C++编写的服务器)
我想知道是否用Unix Domain socket替换内部通信会改善性能吗?
或者一般来说是否有任何证据/理论证明Unix Domain套接字会提供比TCP环回连接更好的性能?
我正在尝试使用 UDP 在 C++ 中的 Android 上创建 unix 域套接字服务器和客户端。我需要客户端向服务器发送一条消息(“hi”),然后服务器需要从那里向客户端发送数据。我已经成功创建了双方的套接字,并且我能够在服务器上接收来自客户端的短消息。但是,服务器上的 recvfrom(..) 不会填充 struct sockaddr *src_addr、socklen_t *addrlen 参数。使用这些 src_addr 和 addrlen 的后续 sendto 消息显然会失败(sendto 返回 -1)。
这是服务器的代码:
int serverSocket = socket(PF_LOCAL, SOCK_DGRAM, 0);
int sendingBufferSize = OUTPUT_BUFFER_SIZE;
setsockopt(serverSocket, SOL_SOCKET, SO_SNDBUF, &sendingBufferSize, sizeof(sendingBufferSize));
struct sockaddr_un server;
memset(&server, 0, sizeof server);
server.sun_family = AF_LOCAL;
// the first byte of sun_path should be '\0' for abstract namespace
const char * socket_name = SOCKET_NAME;
server.sun_path[0] = '\0';
strcpy(server.sun_path + 1, socket_name);
socklen_t sockaddr_len = sizeof(server.sun_family) + …Run Code Online (Sandbox Code Playgroud)