© Copyright 1997 University of New Haven
#ifndef unix
#define WIN32
#include <windows.h>
#include <winsock.h>
#else
#define closesocket close
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
main()
{#ifdef _MSC_VER
#define MSVCFAR far
#else
#define MSVCFAR
#endif
struct sockaddr_in server; /* structure to hold an IP address */
int sd, sdclient; /* socket descriptor */
int n;
#ifdef WIN32
WSADATA wsaData; WSAStartup(0x0101, &wsaData);#endif
memset((char *)&server,0,sizeof(server)); /* clear sockaddr structure */server.sin_family = AF_INET; /* set family to Internet */
server.sin_addr.s_addr= htonl(INADDR_ANY);#define PORT 6996
server.sin_port= htons(PORT); /* Create a socket. */ sd = socket(PF_INET, SOCK_STREAM, 0); if (sd < 0) { fprintf(stderr, "socket creation failed\n"); exit(1); } /* Connect the socket to the specified server. */ if (bind(sd, (struct sockaddr *)&server, sizeof(server)) < 0) { fprintf(stderr,"bind failed\n"); exit(1); }#define QLEN 5
if (listen(sd, QLEN))
{ fprintf(stderr,"listen failed\n");exit(1);
} for (;;)
{if ((sdclient= accept(sd, 0, 0)) < 0) {
fprintf(stderr,"accept failed\n"); exit(1); } send(sdclient, "Server says hi!\n", 16, 0); closesocket(sdclient); } /* Close the socket. */ closesocket(sd); /* Terminate the server program gracefully. */#ifdef WIN32
WSACleanup();#endif
exit(0);}