0
你好我正在發送週期請求然後處理它們,我必須這樣做,直到程序沒有被用戶停止。我必須使用UDP和後1020只測試要求在本地主機上後,我的gethostbyname得到錯誤,它會返回NULLGethostbyname在第1021次請求後返回NULL
int sockfd, portno, n, serverlen;
struct sockaddr_in serveraddr;
struct hostent *server;
portno = my_port;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
server = gethostbyname(my_host);
bzero(buf, BUFSIZE);
if (sockfd < 0) {
error("ERROR opening socket");
}
if (server == NULL) {
fprintf(stderr,"ERROR, no such host as %s\n", my_host);
exit(0);
}
bzero((char *) &serveraddr, sizeof(serveraddr));
serveraddr.sin_family = AF_INET;
bcopy((char *)server->h_addr,
(char *)&serveraddr.sin_addr.s_addr, server->h_length);
serveraddr.sin_port = htons(portno);
serverlen = sizeof(serveraddr);
n = sendto(sockfd, packet, myArraySize, 0, (struct sockaddr *)&serveraddr, serverlen);
if (n < 0) {
error("ERROR in sendto");
}
n = recvfrom(sockfd, buf, BUFSIZE, 0, (struct sockaddr *)&serveraddr, &serverlen);
if (n < 0) {
error("ERROR in recvfrom");
}
我什麼也沒有發現有關此問題的,如果我不使用本地主機,然後我得到的錯誤只有120個請求後。
天啊,我想我是盲人。是的,這是足夠的關閉sockfd – Kris1112
很高興我可以幫助,與代碼的好運:) – user3386109