Red de conocimiento informático - Material del sitio web - Cómo enviar paquetes UDP sin formato en un entorno WINDOWS. Responda la pregunta y envíe su puntuación.

Cómo enviar paquetes UDP sin formato en un entorno WINDOWS. Responda la pregunta y envíe su puntuación.

Tengo un programa Socket en lenguaje VC, pero el protocolo IP es 6. Déjame mostrarte dos características clave.

void cymy 6 ddlg::on button 1()//Generar un socket de envío.

{

memset( amp; sugerencia, 0, tamaño de (sugerencia));

//sugerencias . p>

p>

hints.ai _ family = AF _ INET6

hints.ai _ socktype = SOCK _ DGRAM

hints.ai _ protocolo = IPPROTO _ UDP

hints.ai_flags = AI_NUMERICHOST

rc=getaddrinfo((LPCTSTR)m_send, "2000", amp solicita ampRES); //Resolver la dirección local.

Si (rc!=0)

{

AfxMessageBox(" falla ");

Retorno;

}

s_send = socket(RES-gt;ai_family,RES-gt;ai_socktype,RES-gt;ai_protocol); //Crear dirección local

if (s_send== INVALID_SOCKET)

{AfxMessageBox("Error al crear el socket local"); retorno;}

Otro

{

AfxMessageBox(" Socket local construido exitosamente");

//Enlazar puerto de escucha local bind

if(bind (s_send, RES- gt; ai_addr, RES - gt;ai_addrlen)==SOCKET_ERROR)

//fprintf(stderr, "bind() falló con el error d: s\

", WSAGetLastError(), error de decodificación( WSAGetLastError());

AfxMessageBox("Enlace fallido");

Otros

{

AfxMessageBox("Enlace exitoso ");

GetDlgItem( IDOK)- gt; habilitar ventana(TRUE);

}

//printf("bind ok\

");

}

if ( WSAAsyncSelect( s_send, m_hWnd, UM_PACKET, FD_READ ) == SOCKET_ERROR)

{

MessageBox( "WSAAsyncSelect falló");

cerrar socket(s _ enviar);

Regresar;

}

}

void CMy6dDlg::OnOK ()

{

// TODO: Agregar verificación adicional aquí

//Enviar mensaje

actualizar datos(TRUE); /p>

memset(amp; sugerencia, 0, tamaño de(sugerencia));

//sugerencias . ai _ family = PF _ UNSPEC;

hints.ai _ family = AF _ INET6

hints.ai _ socktype = SOCK _ DGRAM

hints.ai _ protocolo = IPPROTO _ UDP//También puedes cambiarlo a 0 aquí para permitir que el El sistema elige.

hints.ai_flags = AI_NUMERICHOST

RC = getaddrinfo((LPCTSTR)m_receive, "2000", amp tips ampRES); //Resolver dirección de recopilación.

Si (rc!=0)

{

AfxMessageBox(" falla ");

Retorno;

}

rc=sendto(s_send, m_sendtxt, m_sendtxt.

GetLength(), 0, RES- gt; ai_addr, RES- gt; ai_addr len);

if (rc== SOCKET_ERROR)

{

/ /fprintf(stderr, "falló el envío(): error d: s\

", WSAGetLastError(), error de decodificación(WSAGetLastError());

AfxMessageBox("Error de envío" );

cerrar socket(s _ enviar);

}

Otro

{

AfxMessageBox( "Enviado correctamente");

}

}

Para obtener más información, consulte Socket

.