我遇到了sendto的问题.
我有一个接收器接收带有recvfrom的UPD数据包,然后使用sendto回复发送者.
不幸的是,我得到了错误11(资源暂时不可用).我正在使用两个插座.
第一个数据包实际上是发送但后来没有发送:
sendto ::成功
错误:0.
sendto ::资源暂时不可用
错误:11.
sendto ::资源暂时不可用
...
这是我的代码的摘录:
int sockfd, sockSend;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
perror("socket");
if ((sockSend = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
perror("socket");
if (fcntl(sockfd, F_SETOWN, getpid()) < 0) {
perror("fcntl");
}
if (fcntl(sockfd, F_SETFL, O_RDONLY | O_NONBLOCK | FASYNC) < 0) {
perror("fcntl");
}
if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr))
< 0)
perror("bind");
Run Code Online (Sandbox Code Playgroud)
在SIGIO处理程序中:
len = sizeof(recv_addr);
char buffer[payload];
bzero(buffer, payload);
n = recvfrom(sockfd, buffer, payload, …Run Code Online (Sandbox Code Playgroud)