Server Source

This is a very basic server, it just echos back what it recives from the client. You can also get the source from Server/server.c


#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <limits.h>
#include <netdb.h>
#include <arpa/inet.h>


int main(void)
{
int sd,acceptSocket,thisSocket;
int listenPort=10001;
int errorcode;
pid_t PID;
struct sockaddr_in address;

char message[100];
int messageLen,bytesReceived,bytesSent;

sd = socket( AF_INET, SOCK_STREAM, 6 ); /*Socket Descriptor */
messageLen=sizeof(message);

/* Things required for bind */
address.sin_family = AF_INET;
address.sin_port = htons(listenPort);
address.sin_addr.s_addr = inet_addr("127.0.0.1");
bzero(&(address.sin_zero),8);

errorcode = bind( sd, (struct sockaddr *)&address, sizeof(struct sockaddr ));
if (errorcode==-1) {
fprintf (stderr, "Bind failed!\n");
return -1;
}

printf("*************************\n");
printf("*\tSERVER LOG\t*\n");
printf("*************************\n");

printf("\nbind return code %d\n",errorcode);
printf("-----------------------------------------------------\n");
errorcode = listen( sd, 100);
printf("listen errorcode: %d\n",errorcode);
printf("-----------------------------------------------------\n");


for(;;) {

acceptSocket=accept(sd, ( struct sockaddr *)&address, (int *) sizeof(struct sockaddr) );

printf("New connection accepted on socket %u\n",acceptSocket);
printf("-----------------------------------------------------\n");
fflush(NULL);

do {
bzero(message,messageLen);
bytesReceived=recv(acceptSocket,message,messageLen,0);
printf("We recived: %s\n",message);
printf("-----------------------------------------------------\n");
fflush(NULL);

if (strncmp(message,"exit",4)==0) {
bzero(message,messageLen);
strcpy(message,"closed");
bytesReceived=sizeof(message);
printf("We will close this socket!\n");
printf("-----------------------------------------------------\n");
fflush(NULL);
}
bytesSent=send(acceptSocket,message,bytesReceived,0);

} while (strncmp(message,"closed",4)!=0 && strlen(message)>0 );
printf("Socket closed\n");
printf("-----------------------------------------------------\n");
fflush(NULL);

close(acceptSocket);
}

}

 

Last updated 1999-05-02 by Christian Holm