Red de conocimiento informático - Problemas con los teléfonos móviles - Programación sencilla de sockets

Programación sencilla de sockets

# incluir ltwinsock2.h gt #pragma comment(lib, "WS2_32.lib") clase CSockInit

{

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.