18,363
社区成员




int main_UDP()
{
int nRet = 0;
int nLastError = 0;
char recvBuf[256] = {0};
SOCKET socket_server = {0};
WORD wVersionRequested;
WSADATA wsaData;
// Ready To Use socket.
wVersionRequested = MAKEWORD( 2, 2 );
nRet = WSAStartup(WINSOCK_VERSION, &wsaData);
if (nRet != 0)
{
printf("WSAStartup Fail nErr %d!\n", WSAGetLastError());
goto ERR_CATCH;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions later */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return 0;
}
// Create
socket_server = socket(AF_INET, SOCK_DGRAM, 0);
if (INVALID_SOCKET == socket_server)
{
nLastError = WSAGetLastError();
printf("socket %d, last Error %d!\n", socket_server, nLastError);
}
// Bind
sockaddr_in sock_add;
sock_add.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
sock_add.sin_family = AF_INET;
sock_add.sin_port = htons(5698);
nRet = bind(socket_server, (sockaddr*)&sock_add, sizeof(sock_add));
if (nRet != 0)
{
printf("bind fail nRet %d, nErr %d\n", nRet, WSAGetLastError());
goto ERR_CATCH;
}
{
while(1)
{
int nfrom = 0;
sockaddr scfrom = {0};
nfrom = sizeof(scfrom);
printf("Recvfrom before\n");
nRet = recvfrom(socket_server, recvBuf, 256, MSG_PEEK, &scfrom, &nfrom);
if (nRet > 0)
{
printf("recvBuf: %s, nRet: %d \n", recvBuf, nRet);
//break;
}
nRet = sendto(socket_server, "Hello Friend", strlen("Hello Friend")+1, 0, &scfrom, nfrom);
if (nRet > 0)
{
printf("sendto: %s, nRet: %d \n", "Hello Friend", nRet);
//break;
}
//Sleep(10000);
printf("Recvfrom end, nRet %d\n", nRet);
printf("---------------------\n");
memset((void*)recvBuf, 0, 256);
}
}
printf("Done!");
ERR_CATCH:
closesocket(socket_server);
WSACleanup( );
return 0;
}
int main_UDP()
{
int nCount = 0;
int nRet = 0;
int nLastError = 0;
SOCKET socket_client = {0};
char bufrecv[256] = {0};
WORD wVersionRequested;
WSADATA wsaData;
SOCKADDR_IN addrSrv;
// Ready To Use socket.
wVersionRequested = MAKEWORD( 2, 2 );
nRet = WSAStartup(WINSOCK_VERSION, &wsaData);
if (nRet != 0)
{
printf("WSAStartup Fail nErr %d!\n", WSAGetLastError());
goto ERR_CATCH;
}
/* Confirm that the WinSock DLL supports 2.2.*/
/* Note that if the DLL supports versions later */
/* than 2.2 in addition to 2.2, it will still return */
/* 2.2 in wVersion since that is the version we */
/* requested. */
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );
return 0;
}
// Create
socket_client = socket(AF_INET, SOCK_DGRAM, 0);
if (INVALID_SOCKET == socket_client)
{
nLastError = WSAGetLastError();
printf("socket %d, last Error %d!\n", socket_client, nLastError);
}
{
//while(1)
{
int fromlen = 0;
SOCKADDR sckfrom = {0};
char szBufRecv[256] = {0};
addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.0.72");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(5698);
nRet = sendto(socket_client, "Name: Password:123456", strlen("Name: Password:123456"), 0, (SOCKADDR *)&addrSrv, sizeof(addrSrv));
if (nRet > 0)
printf("Send Successsful\n");
fromlen = sizeof(sckfrom);
//
nRet = recvfrom(socket_client, szBufRecv, 256, 0, &sckfrom, &fromlen);
if (nRet < 0)
{
printf("recvfrom nRet %d, nErr %d \n", nRet, WSAGetLastError());
}
printf("recvfrom: %s, nRet %d\n", szBufRecv, nRet);
//Sleep(6000);
printf("---------------------\n");
}
}
printf("\nbufrecv %s, nRet %d, nCount %d\n", bufrecv, nRet, nCount);
ERR_CATCH:
closesocket(socket_client);
WSACleanup( );
return 0;
}