Domanda

Ciao Io sono l'attuazione P2P chat applicazione in cui Server mediatore per exchangeing IP e la porta per la connessione peer. Sto ottenendo WSAEAFNOSUPPORT errore 10047.

ho creato UDP Presa

sockfd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); poi iam legandola a IP locale e la porta.

if (bind (sockfd, (struct sockaddr *) & localaddr, sizeof (localaddr)) <0)     {         Error_Code ( "create_socket: bind ()");         ritorno -1;     }

allora io sto contattando il server.

// la connessione con il server

sendto (sockfd, pBuffer, sizeof (nMessageType), 0, (const sockaddr *) & config.serverAddr, dimensioni);

Server registra l'altro si collega collegato peer.once pari al server che tornare IP e la porta di altri peer.so un peer può usare IP e la porta per collegare direttamente ad altri peer. ma sto ottenendo errore durante l'invio dei dati al di altri peer

// invio dei dati al pari

int ret = sendto (sockfd, sendbuf, sizeof (nMessagetype), 0, (const sockaddr *) e m_peer.publicaddr, sockAddLen); esso restituire 10047 errore WSAEAFNOSUPPORT.

Qui sto usando lo stesso socket server di contatto e altri peer è questo motivo? Non capisco cosa non va qui. E 'in grado di connettersi con il server corretto, ma non riesce a collegare altri peer.

È stato utile?

Soluzione

fuori a punta nel sendto per il messaggio di errore effettivo WSAEAFNOSUPPORT l'indirizzo che si sta utilizzando per inviare non è della stessa famiglia, come la presa si sta inviando via.

È necessario fare in modo che l'indirizzo in m_peer.publicaddr è della stessa famiglia come sockfd. Per esempio, se si invia un indirizzo IPv6, AF_INET non sarà il lavoro (che avrebbe dovuto essere AF_INET6)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top