Listing 1: A simple socket application

#ifdef WIN32
#include <winsock2.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#endif

int main ()
{
  int sd;
  char response[ 100 ];

  struct sockaddr_in serveraddr;

  sd = socket ( AF_INET, SOCK_STREAM, 0 );

  memset ( &serveraddr, 0, sizeof ( serveraddr ) );
  serveraddr.sin_family = AF_INET;
  serveraddr.sin_port = htons ( 25 );
  serveraddr.sin_addr.s_addr = inet_addr ( "127.0.0.1" );

  connect ( sd, ( struct sockaddr* ) &serveraddr,
            sizeof ( serveraddr ) );

  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );
  write ( sd, "mail from: jpee@localhost.com\n", 30 );
  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );
  write ( sd, "rcpt to: jpee@localhost\n", 24 );
  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );
  write ( sd, "data\n", 5 );
  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );
  write ( sd, "test\n", 5 );
  write ( sd, ".\n", 2 );
  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );
  write ( sd, "quit\n", 5 );
  memset ( response, 0, 100 );
  read ( sd, response, 100 );
  printf ( "%s", response );

  return ( 0 );
}
— End of Listing —