(8) 发送数据。

BOOL Send(CString sIP, u_short nPort, CString sSendData)
{
DWORDdwIP;
SOCKADDR_IN saAddr;
if (m_Socket == INVALID_SOCKET)
{
AfxMessageBox("套接字不可用!");
return FALSE;
}
if ((dwIP = inet_addr(sIP)) == INADDR_NONE)
{
AfxMessageBox("无法获取目标IP!");
return FALSE;
}
saAddr.sin_family  = AF_INET;
saAddr.sin_port= htons(nPort);
saAddr.sin_addr.s_addr = dwIP;
if (sendto(m_Socket, sSendData, sSendData.GetLength(), 0, (LPSOCKADDR) &saAddr, sizeof(saAddr)) == SOCKET_ERROR)
{
AfxMessageBox("发送数据失败!");
return FALSE;
}
return TRUE;
}

(9) 关闭套接字。

if (m_Socket != INVALID_SOCKET)
{
closesocket(m_Socket);
}
m_Socket = INVALID_SOCKET;
WSACleanup();

具体WinSock API实现UDP协议的过程已经全部讲完。UDP协议真正的优势在于它具有TCP协议所不具备的功能,如:广播、多播和穿透NAT等等。


相关内容