Salve a tutti, ho delle difficoltà con le raw socket e non ne capisco il motivo:
##########################
int buffer_len ;
unsigned char* buffer = (unsigned char *) malloc(65565);
int socket = socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
struct sockaddr_in temp;
temp.sin_family = AF_INET; //famiglia AF_INET
temp.sin_addr.s_addr = INADDR_ANY; //vengono accettati dati da qualunque parte provengano
temp.sin_port = htons(port); //è necessario convertire la porta secondo l'ordine corretto dei bit (LittleEndian)
int bound = bind(socket,(struct sockaddr*) &temp,sizeof(temp));
if (bound > -1){
while ((buffer_len = recv(socket,buffer,sizeof(buffer),0)) < 0);
printf("%s \n",buffer);
free(buffer);
}
###########################
Il fatto è che quando tento di stampare il pacchetto catturato, viene stampata una E e null'altro, nonostante buffer_len riporti una lunghezza di svariati caratteri.
Premetto di essere nuovo con il c e probabilmente è una cavolata ma non so dove possa essere il problema.