Cómo enviar paquetes UDP sin formato en un entorno WINDOWS. Responda la pregunta y envíe su puntuación.
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ó"); p>
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
.