Red de conocimiento informático - Computadora portátil - 1. Programación basada en comunicación por socket: establezca TCPSocket para la comunicación, el servidor transmite datos de fecha al cliente y el cliente recibe la información.

1. Programación basada en comunicación por socket: establezca TCPSocket para la comunicación, el servidor transmite datos de fecha al cliente y el cliente recibe la información.

//Obtener hora

CString strTime;

CTime st = CTime::GetCurrentTime();

strTime = st.Format ("YmdHMS");

//Crear lado del servidor

WORD wVersionRequested;

WSADATA wsaData;

int err;

p>

wVersionRequested = MAKEWORD( 1, 1

err = WSAStartup( wVersionRequested, amp; wsaData

if ( err != 0); ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData. wVersion ) != 1 ) {

WSACleanup( );

return

}

SOCKET calcetín = socket(AF_INET, SOCK_STREAM , 0);

int opt ​​​​= 1;

int len11 = sizeof(opt);

setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char). *)amp; opt, len11 );

if (sock == INVALID_SOCKET)

{

// "Error de inicialización";

closesocket(calcetín);

retorno

}

SOCKADDR_IN addrsrv

addrsrv.sin_family = AF_INET

addrsrv.sin_port = htons(6001);

addrsrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

if (bind(sock, (SOCKADDR*) amp; addrsrv, sizeof(SOCKADDR )) == SOCKET_ERROR)

{

// "Error de enlace"

closesocket(sock);

return;

}

listening(sock, 10);

//El cliente recibe la conexión del servidor

char. m_recvBuf[2000];

p>

memset(m_recvBuf, 0, 2000);

mientras(VERDADERO)

{

SOCKET sNew = ::accept(sock, ( SOCKADDR*)amp; addrRemo

te, amp; nAddrLen); //Conexión del cliente recibida

//Hora de envío

int hvsndlen = 0

int sndlen = 0; >

while ((len -hvsndlen) gt; 0)

{

sndlen = enviar(soc, (LPCTSTR)strTime hvsndlen, len-hvsndlen, 0) ;

if (sndlen == SOCKET_ERROR)

{

return -1;

}

hvsndlen = sndlen ;

}

}

// Coloque el programa anterior en su programa principal y debería poder ejecutarse. Hay un tipo CString. Si no está acostumbrado, puede convertir CTime a otros tipos.