Naruszenie ochrony pamięci

0

Cześć, mam problem z podłączeniem się pod port (potrzebuję podłączyć się pod 67). Gdy odpalam pod 8080, program działa, gdy chcę z roota podłączyć się pod jakikolwiek, pojawia się błąd (naruszenie ochrony pamięci). Jak mogę to naprawić?

Kod:

#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h> 


char buf[512];

int main(int argc, char **argv)
{
    struct sockaddr_in myaddr, endpoint;
    int sdsocket, r;
    socklen_t addrlen;
    unsigned int port;
    
    printf("Na ktorym porcie mam sluchac? : ");
    scanf("%u", &port);

    if ((sdsocket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
        printf("socket() nie powiodl sie\n");
        return 1;
    }
        
    myaddr.sin_family = AF_INET;
    myaddr.sin_port = htons(port);
    myaddr.sin_addr.s_addr = INADDR_ANY;

    if (bind(sdsocket, (struct sockaddr*) &myaddr, sizeof(struct sockaddr_in)) < 0) {
        printf("bind() nie powiodl sie\n");
        return 1;
    }

    return 0;
} 
0

(struct sockaddr*) &myaddr

Nie podoba mi się to rzutowanie. Spróbuj dodać -fno-strict-aliasing do opcji kompilatora.

0

Dziękuję, już udało mi się to naprawić :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1