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