Programación de red de interfaz de socket
Para comunicación de extremo a extremo sin conexión
//#include
//#pragma comment(lib,"WS2_32.lib ")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2, 2),&wsd)!=0)
{
return -1;//Error
}
s=socket( AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
devuelve -1 ;//Error al crear el socket
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr. =inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))= = SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//conjunto de enlace Error de conexión
}
int nServAddrlen=sizeof(servAddr);
MemoriaCero(buf,sizeof(buf));
if(recvfrom (s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//Error al recibir datos
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
stracpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family =AF_INET ;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//Error al enviar datos al servidor
}
cerrar socket(s);
WSACleanup();