IP 주소를 통해 하나의 수식을 적용하고 있습니다. 그러나 때때로 나에게 무작위적인 결과를 주는데, 그것은 우연히 일어난다. 때로는 올바르게 토큰 화되지 않고 때로는 0 값을 부여합니다. 오류 재연의 비율은 1000 샘플에서 거의 2-5입니다.
호출 함수 = 수식 (IPADDRESS); 내가 초당 수백 개의 다른 IP를 사용하고있다. 문자열이 올바르게 토큰 화되지 않았습니다.
int formula (char ip[]){
char *token = NULL;
unsigned long value;
int finalv;
char ipaddress[16];
char delims[]=".";
int octet=3;
value = 0;
FILE *fp;
fp = fopen(LOGFILE, "a");
strcpy(ipaddress,ip);
fprintf(fp, "%s\n",ipaddress);
token = strtok(ipaddress,delims);
while(token != NULL) {
fprintf(fp,"%d",(atoi(token));
if (atoi(token) != 0){
if(octet ==3)
value = value + (255 * 255 * 255 * (atoi(token)));
else if(octet ==2)
value = value + (255 * 255 * (atoi(token)));
else if(octet ==1)
value = value + (255 * (atoi(token)));
else if(octet ==0)
value = value + (atoi(token));
}
octet--;
token = strtok(NULL,delims);
}
finalv = value % 9999;
fprintf(fp, " -- %d \n",(int)finalv);
if(fp)
fclose(fp);
return (int)v;
}
OUTPUTFILE
: 는172.17.82.255
172 0 1 -- 1983
--
172.254.254.254
172 0 0 0 -- 1728
--
172.255.255.225
172 0 -- 1728
--
172.255.255.255
172 21 0 1 -- 7390
--
172.255.84.255
172 0 8 -- 3768
토큰 = strtok (NULL, 토큰)'은 이전 토큰을 구분 기호로 사용하여'ipaddress'에서 다음 토큰을 찾습니다. 의도적이라고 생각하지 않습니다. – DevSolar
죄송합니다. 잘못된 코드를 붙여 넣습니다. 여기에 업데이트 된 코드가 있습니다. 여전히 오류가 발생합니다. –
왜 255의 힘을 곱하고 있습니까? ??? 다음 바이트 위치는 가중치 256에 해당합니다. – CiaPan