Server
# Include <winsock2.h>
# Include <stdio. h>
# Include <windows. h>
# Pragma comment (Lib, "ws2_32.lib ")
Int main (INT argc, char * argv [])
{
Wsadata;
Word sockversion = makeword (2, 0 );
Wsastartup (sockversion, & wsadata );
Socket S = socket (af_inet, sock_stream, ipproto_tcp );
If (S = invalid_socket)
{
Printf ("failed socket ()/n ");
Wsacleanup ();
Return 0;
}
Sockaddr_in sin;
Sin. sin_family = af_inet;
Sin. sin_port = htons (8888 );
Sin. sin_addr.s_un.s_addr = inaddr_any;
If (BIND (S, (lpsockaddr) & sin, sizeof (SIN) = socket_error)
{
Printf ("failed BIND ()/n ");
Wsacleanup ();
Return 0;
}
If (Listen (S, 2) = socket_error)
{
Printf ("failed listen ()/n ");
Wsacleanup ();
Return 0;
}
Sockaddr_in remoteaddr;
Int naddrlen = sizeof (remoteaddr );
Socket Client;
Char sztext [] = "Hello world! ";
While (true)
{
Client = accept (S, (sockaddr *) & remoteaddr, & naddrlen );
If (client = invalid_socket)
{
Printf ("failed accept ()/n ");
Continue;
}
Printf ("received a connection: % s/n", inet_ntoa (remoteaddr. sin_addr ));
Send (client, sztext, strlen (sztext), 0 );
Closesocket (client );
}
Closesocket (s );
Wsacleanup ();
Return 0;
}
Client
# Include <winsock2.h>
# Include <stdio. h>
# Include <windows. h>
# Pragma comment (Lib, "ws2_32.lib ")
Int main (INT argc, char * argv [])
{
Wsadata;
Word sockversion = makeword (2, 0 );
Wsastartup (sockversion, & wsadata );
Socket S = socket (af_inet, sock_stream, ipproto_tcp );
If (S = invalid_socket)
{
Printf ("failed socket ()/n ");
Wsacleanup ();
Return 0;
}
Sockaddr_in servaddr;
Servaddr. sin_family = af_inet;
Servaddr. sin_port = htons (8888 );
Servaddr. sin_addr.s_un.s_addr = inet_addr ("127.0.0.1 ");
If (connect (S, (sockaddr *) & servaddr, sizeof (servaddr) =-1)
{
Printf ("failed connect ()/n ");
Wsacleanup ();
Return 0;
}
Char buffer [256];
Int nrecv = Recv (S, buffer, 256, 0 );
If (nrecv> 0)
{
Buffer [nrecv] = '/0 ';
Printf ("received data: % s/n", buffer );
}
Closesocket (s );
Wsacleanup ();
Return 0;
}