Привет
Я реализую приложение чата P2P, где сервер будет посредником для обмена IP-адресом и портом для подключения к пиру.
Я получаю сообщение об ошибке WSAEAFNOSUPPORT 10047.
Я создал UDP
розетка
sockfd = сокет (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
тогда я связываю его с локальным ip и портом.
if (bind (sockfd, (struct sockaddr *) & localaddr, sizeof (localaddr)) <0)
{
Error_Code ( "create_socket: Bind ()");
возврат -1;
} </p>
тогда я связываюсь с сервером.
// соединение с сервером
sendto (sockfd, pBuffer, sizeof (nMessageType), 0, (const sockaddr *) & config.serverAddr, size);
сервер отслеживает другой подключенный узел peer.once подключается к серверу и возвращает IP-адрес и порт другого узла. Таким образом, узел может использовать IP-адрес и порт для прямого подключения к другому узлу.
но я получаю ошибку при отправке данных на другой узел
// отправка данных равноправному узлу
int ret = sendto (sockfd, sendBuf,
sizeof (nMessagetype), 0, (const sockaddr *) & m_peer.publicaddr, sockAddLen);
возвращается ошибка 10047 WSAEAFNOSUPPORT.
Здесь я использую один и тот же сокет для связи с сервером и другим узлом, это причина этого?
Я не понимаю, что здесь происходит не так.
Он может правильно подключиться к серверу, но не может подключиться к другому узлу.