这里是我迄今为止所做的工作(追踪错误):
struct sockaddr_in addr, ss, dest;
int port, s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
fcntl(s, F_SETFL, fcntl(s, F_GETFL, 0) | O_NONBLOCK);
memset((char*) &addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
inet_aton("127.0.0.1", &addr.sin_addr);
bind(s, (struct sockaddr*) &addr, sizeof(addr));
unsigned int len = sizeof(ss);
getsockname(s, (struct sockaddr*) &ss, &len);
port = ss.sin_port;
memset((char*) &dest, 0, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(port);
inet_aton("127.0.0.1", &dest.sin_addr);
sendto(s, "test", 5, 0, (struct sockaddr*) &dest, sizeof(dest));
char buf[5];
recv(s, buf, 5, 0);
The last sentence fails with a message of Resource temporarily unavailable
(because of the O_NONBLOCK
flag).
在座标一中,让本组织对一个随机港口进行约束,然后我用<条码>获取。 如果我使用固定港口,则取消对<条码>植被名代码>的呼吁。 之后,它运作。
PS:一毫升机。