00001
00007 #include <unistd.h>
00008 #include <stdio.h>
00009 #include <stdlib.h>
00010 #include <string.h>
00011 #include <strings.h>
00012 #include <sys/socket.h>
00013 #include <sys/types.h>
00014 #include <netinet/in.h>
00015 #include <time.h>
00016 #include <signal.h>
00017 #include <gtk/gtk.h>
00018
00019 #define BUFFER 4096
00020 int listen_file_descriptor;
00025 void close_properly(int signal)
00026 {
00027 int return_value;
00028
00029 printf("Shutting down...\n");
00030
00031 return_value =close(listen_file_descriptor);
00032
00033 if(return_value <0)
00034 {
00035 perror("Cannot close listening socket.");
00036 exit(1);
00037 }
00038
00039 printf("Shutdown complete.\n");
00040 exit(0);
00041 }
00053 int main(int argc, char *argv[])
00054 {
00055
00056 int connection_file_descriptor;
00058 char temp_line[BUFFER];
00059
00060 struct sockaddr_in server_address;
00061
00062 int return_value;
00063
00064
00065
00066
00067 struct sigaction act1;
00068
00069 act1.sa_handler = close_properly;
00070 sigemptyset(&act1.sa_mask);
00071 act1.sa_flags=0;
00072
00073 sigaction(SIGINT, &act1, 0);
00074
00075 listen_file_descriptor = socket(AF_INET, SOCK_STREAM, 0);
00076 if(listen_file_descriptor < 0)
00077 {
00078 fprintf(stderr, "%s: cannot open socket.\n", argv[0]);
00079 exit(1);
00080 }
00081 bzero(&server_address, sizeof(server_address));
00082 server_address.sin_family = AF_INET;
00083 server_address.sin_addr.s_addr = htonl(INADDR_ANY);
00084 server_address.sin_port = htons(8892);
00085 return_value = bind(listen_file_descriptor, (struct sockaddr *) &server_address, sizeof(server_address));
00086 if(return_value < 0)
00087 {
00088 perror("Cannot bind");
00089 exit(1);
00090 }
00091 return_value = listen(listen_file_descriptor, 5);
00092 if(return_value < 0)
00093 {
00094 perror("Cannot listen");
00095 exit(1);
00096 }
00097
00098 while(1)
00099 {
00100 connection_file_descriptor = accept(listen_file_descriptor, (struct sockaddr *) NULL, NULL);
00101
00102 if(connection_file_descriptor < 0)
00103 {
00104 perror("accept() failed.");
00105 exit(1);
00106 }
00107 temp_line[0]='\0';
00108 int num;
00109 num=read (connection_file_descriptor, temp_line, BUFFER);
00110 temp_line[num]='\0';
00111 printf("\n total marks are:%s\n",temp_line);
00112 char str[100];
00113 if(atoi(temp_line)>5)
00114 sprintf(str,"You passed with marks:%d",atoi(temp_line));
00115 else
00116 sprintf(str,"You failed(could not clear cutoff)");
00117
00118 write(connection_file_descriptor,str, strlen(str));
00119 str[0]='\0';
00120 }
00121
00122 return 0;
00123 }
00124