大家来看看,UDP小程序跑不起来!!!
longj 2004-10-22 03:02:32 Server 收不到消息!!!!!
//
// UDP Server
//
#include "stdafx.h"
#include <Winsock2.h>
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET s;
WORD wVer;
WSADATA wsaData;
sockaddr_in sain, sact;
char buff[256] = {0};
int ilen1, ilen2, iRet;
HANDLE hRead, hEvents[1];
wVer = MAKEWORD(2, 2);
WSAStartup(wVer, &wsaData);
s = socket(AF_INET, SOCK_DGRAM, 0);
if( s == INVALID_SOCKET )
{
printf("error1\n");
}
sain.sin_family = AF_INET;
sain.sin_port = htons(7777);
//sain.sin_addr.S_un.S_addr = inet_addr("192.168.1.117");
sain.sin_addr.s_addr = INADDR_ANY;
//memset(&(sain.sin_zero), 0, 8);
printf("%d, %d, %d\n", s, sizeof(sockaddr_in), sizeof(sockaddr) );
iRet = bind(s, (sockaddr *) &sain, sizeof(sockaddr_in) );
if(iRet == SOCKET_ERROR)
{
printf("error2\n");
}
hRead = CreateEvent(NULL, FALSE, FALSE, NULL);
WSAEventSelect(s, hRead, FD_READ);
hEvents[0] = hRead;
while(1)
{
printf("等呀等..., %d\n",s );
WSAWaitForMultipleEvents(1, hEvents, FALSE, INFINITE, FALSE);
memset(buff, 0, 256);
ilen1 = recvfrom(s, buff, 256, 0, (sockaddr *) &sact, &ilen2);
//WSAEFAULT
printf("length=%d, %d, %s\n", ilen1, WSAGetLastError(), buff);
}
closesocket(s);
WSACleanup();
return 0;
}
//
// UDP client
//
#include "stdafx.h"
#include <Winsock2.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
SOCKET s;
WORD wVer;
WSADATA wsaData;
sockaddr_in sain, sact;
char buff[256] = {0};
int ilen1, ilen2;
string str = "依托是";
wVer = MAKEWORD(2, 2);
WSAStartup(wVer, &wsaData);
s = socket(AF_INET, SOCK_DGRAM, 0);
sain.sin_family = AF_INET;
sain.sin_port = htons(7777);
sain.sin_addr.S_un.S_addr = inet_addr("192.168.1.117");
memset(&sain.sin_zero, 0, 8);
ilen2 = sizeof(sockaddr);
ilen1 = sendto(s, str.c_str(), str.length(), 0, (sockaddr *) &sain, ilen2);
printf("length=%d, %d, %s\n", ilen1, WSAGetLastError(), str.c_str());
closesocket(s);
WSACleanup();
return 0;
}