我有一个服务器,而不是一个“命令处理程序”进程。它通过 UDP 接收消息,并通过其发布的 API(无论该进程采用何种 IPC 机制)与该进程通信,从而将要做的工作委托给不同的进程。我们的系统有几个合作流程。然后,该 API 调用的结果会从命令处理程序进程发送回客户端。
一个命令是控制从另一个进程生成到客户端的数据流(“连接”消息)。
这应该工作吗?我将客户端的 IP 地址和端口号发送到另一个进程,该进程创建一个新套接字,并执行发送...我已经跟踪了代码,一切看起来都很好,但是客户端仍然被阻止接收...我知道如果我从命令处理程序发送到,它会得到响应,但不是来自新套接字。
这是一些示例代码:
#define LEN 10000
char buffer[LEN];
int sfd, nsfd, bread, addrsize;
struct sockaddr_in addr;
addrsize = sizeof (struct sockaddr_in);
server.sin_family = AF_INET;
server.sin_port = htons(5200);
server.sin_addr.s_addr = INADDR_ANY;
sfd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
bind (sfd, (struct sockaddr*)&server, addrsize);
bread = recvfrom(sfd, buffer, LEN, 0, &addr, &addrsize);
/* send IP address and port number through the API to another process */
/* in that other process, I do something like this...addr has the IP
* address and port in it from above: */
nsfd = socket (AF_INET, SOCK_DGRAM, IPROTO_UDP);
sendto(nsfd, buff, bread, 0, &addr, sizeof(addr));
所以请帮忙!