ææ个VC++è¯è¨çSocketç¨åºä¸è¿IPåè®®æ¯6çï¼ç»ä½ ç2个å
³é®å½æ°
void CMy6dDlg::OnButton1() //建åéSOCKET
{
memset(&hints,0,sizeof(hints));
//hints.ai_family=PF_UNSPEC;
hints.ai_family=AF_INET6;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_protocol=IPPROTO_UDP;
hints.ai_flags=AI_NUMERICHOST;
rc=getaddrinfo((LPCTSTR )m_send,"2000",&hints,&res);//解ææ¬æºåå°å
if(rc!=0)
{
AfxMessageBox("fail");
return;
}
s_send=socket(res->ai_family,res->ai_socktype,res->ai_protocol);//建æ¬æºåå°å
if(s_send==INVALID_SOCKET)
{AfxMessageBox("建æ¬æºåsocket失败");return ;}
else
{
AfxMessageBox("建æ¬æºåsocketæå");
//ç»å®æ¬å°çå¬ç«¯å£bind
if(bind (s_send,res->ai_addr,res->ai_addrlen)==SOCKET_ERROR)
//fprintf(stderr,"bind() failed with error %d: %s\
",WSAGetLastError(), DecodeError(WSAGetLastError()));
AfxMessageBox("bind失败");
else
{
AfxMessageBox("bindæå");
GetDlgItem(IDOK)->EnableWindow (TRUE);
}
//printf("bind ok\
");
}
if ( WSAAsyncSelect( s_send, m_hWnd, UM_PACKET, FD_READ ) == SOCKET_ERROR )
{
MessageBox( "WSAAsyncSelect failed" );
closesocket( s_send );
return;
}
}
void CMy6dDlg::OnOK()
{
// TODO: Add extra validation here
//åéæ¶æ¯
UpdateData(TRUE);
memset(&hints,0,sizeof(hints));
//hints.ai_family=PF_UNSPEC;
hints.ai_family=AF_INET6;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_protocol=IPPROTO_UDP;//è¿éä¹å¯ä»¥æ¹ä¸º0ï¼è®©ç³»ç»èªå·±é
hints.ai_flags=AI_NUMERICHOST;
rc=getaddrinfo((LPCTSTR )m_receive,"2000",&hints,&res);//解æ对æ¹æ¶å°å
if(rc!=0)
{
AfxMessageBox("fail");
return;
}
rc=sendto(s_send,m_sendtxt,m_sendtxt.GetLength(),0,res->ai_addr,res->ai_addrlen);
if (rc== SOCKET_ERROR)
{
//fprintf(stderr, "send() failed: error %d: %s\
",WSAGetLastError(), DecodeError(WSAGetLastError()));
AfxMessageBox("åé失败");
closesocket(s_send);
}
else
{
AfxMessageBox("åéæå");
}
}
å
·ä½çä½ å¯ä»¥åèSocket
温馨提示:答案为网友推荐,仅供参考