Programación sencilla de sockets
{
Público:
CSockInit(byte minorVer = 2 , byte majorVer=2)
{
WSADATA wsaData
Versión de calcetín WORD = make WORD(min orver, major ver);
if(::WSAStartup(sockVersion, ampwsaData)!=0)
{
Salir(0);
}
}
~CSockInit()
{
* WSACleanup();
}
} ;/ /Primero defina una clase para inicializar WinSocket //El siguiente es el programa del lado del servidor # include
# include " cinit sock . h " CSockInit sockInit
int main()< / p>
{
SOCKET calcetín=::socket(AF_INET,SOCK_DGRAM,IP proto_UDP);
if(sock==INVALID_SOCKET)
{
printf("Socket fallido\n ");
Devuelve 0;
}
sockaddr _ en sin
sin.sin_family = AF_INET
sin .sin_port = htons(4567);
sin.sin_addrS_un. S_addr = INADDR_ANY
if(::bind(sock, (sockaddr *) & sin, sizeof(sin)) = = socket_error)
{
printf ("Error de enlace\n ");
Devuelve 0;
}
char buf[1024]= { 0 };
sockaddr _ en dirección
int nlen = sizeof(addr);
mientras (1)
{
int nRecv=recvfrom (sock, buf, 1024, 0, (sockaddr *) amp; dirección ampnlen
if (nRecv gt; 0)
{
buf[); nRecv]= '\0';
Printf("Datos recibidos: s\n",:inet_ntoa(addr.sin_ addr), buf);
}
}
* cerrar socket (calcetín);
}//El siguiente es el programa de servicio al cliente.
# incluir ltstdio.h gt
#Include "..\CInitSock.h "
Calcetín CSockInit
void main()
{
SOCKET s=::socket(AF_INET, SOCK_DGRAM, IP proto_UDP);
if(s==INVALID_SOCKET)
{
printf("Socket fallido()\ n ");
Return;
}
sockaddr _ en dirección
addr .sin_addr. Sol. s_addr = inet_addr(" 127 . 0 . 0 . 1 ");
addr.sin_family = AF_INET
addr . sin _ port = htons( 4567);
char zstext[]="¡Demostración del servidor TCP!\ r \ n ";
mientras (1)
{
* enviar a(s, zstext,strlen(zstext),0,(sockaddr *) amp;addr,sizeof(addr));
scanf("s ",zs text);
p>}
}Esto está basado en UDP/IP. El nivel es un poco pobre. No te ofendas. En la plataforma win32, Visual Studio básicamente se puede ejecutar. Siempre que se incluya el primer archivo de encabezado encapsulado, no es necesario vincular la biblioteca estática.