single server multiple clients at kernel level

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



i want to create a socket program in which there is single server at kernel level serving multiple clients which are also at kernel level.?

can anyone plz tell me howto ?

if not , tell me the modifications required to be done in the user space single server multiple clients program to make it work at kernel level.\
im sending the user space single server multiple clients program.
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
    int server_sockfd, client_sockfd;
    int server_len, client_len;
    struct sockaddr_in server_address;
    struct sockaddr_in client_address;
    int result;
    fd_set readfds, testfds;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
listen(server_sockfd, 5);
FD_ZERO(&readfds);
FD_SET(server_sockfd, &readfds);
while(1) {
        char ch;
        int fd;
        int nread;
        testfds = readfds;
        printf("server waiting\n");
        result = select(FD_SETSIZE, &testfds, (fd_set *)0,
            (fd_set *)0, (struct timeval *) 0);
        if(result < 1) {
            perror("server5");
            exit(1);
        }
for(fd = 0; fd < FD_SETSIZE; fd++) {
    if(FD_ISSET(fd,&testfds)) {
if(fd == server_sockfd) {
    client_len = sizeof(client_address);
    client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address, &client_len);
    FD_SET(client_sockfd, &readfds);
    printf("adding client on fd %d\n", client_sockfd);
}
        else {
            ioctl(fd, FIONREAD, &nread);
            if(nread == 0) 
            {
                close(fd);
                FD_CLR(fd,&readfds);
                printf("removing client on fd %d\n", fd);
            }
            else 
            {
                read(fd, &ch, 1);
                sleep(5);
                printf("serving client on fd %d\n", fd);
                ch++;
                write(fd, &ch, 1);
            }
        }
      }
    }
  }
}

 #include  <sys/types.h>
 #include  <sys/socket.h>
 #include  <stdio.h>
 #include  <netinet/in.h>
 #include  <arpa/inet.h>
 #include  <unistd.h>
 #include  <stdlib.h>
 int main()
 {
     int sockfd;
     int len;
     struct sockaddr_in address;
     int result;
     char ch = 'A';    
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     address.sin_family = AF_INET;
     address.sin_addr.s_addr = inet_addr("127.0.0.1");
     address.sin_port = htons(9734);
     len = sizeof(address);
     result = connect(sockfd, (struct sockaddr *)&address, len);
   
    if(result == -1) 
   {
        perror("oops: client1");
        exit(1);
   }

   write(sockfd, &ch, 1);
   read(sockfd, &ch, 1);
   printf("char from server = %c\n", ch);
   close(sockfd);
   exit(0);
 }


#include  <sys/types.h>
 #include  <sys/socket.h>
 #include  <stdio.h>
 #include  <netinet/in.h>
 #include  <arpa/inet.h>
 #include  <unistd.h>
 #include  <stdlib.h>
 int main()
 {
     int sockfd;
     int len;
     struct sockaddr_in address;
     int result;
     char ch = 'B';    
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     address.sin_family = AF_INET;
     address.sin_addr.s_addr = inet_addr("127.0.0.1");
     address.sin_port = htons(9734);
     len = sizeof(address);
     result = connect(sockfd, (struct sockaddr *)&address, len);
   
    if(result == -1) 
   {
        perror("oops: client1");
        exit(1);
   }

   write(sockfd, &ch, 1);
   read(sockfd, &ch, 1);
   printf("char from server = %c\n", ch);
   close(sockfd);
   exit(0);
 }

#include  <sys/types.h>
 #include  <sys/socket.h>
 #include  <stdio.h>
 #include  <netinet/in.h>
 #include  <arpa/inet.h>
 #include  <unistd.h>
 #include  <stdlib.h>
 int main()
 {
     int sockfd;
     int len;
     struct sockaddr_in address;
     int result;
     char ch = 'C';    
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     address.sin_family = AF_INET;
     address.sin_addr.s_addr = inet_addr("127.0.0.1");
     address.sin_port = htons(9734);
     len = sizeof(address);
     result = connect(sockfd, (struct sockaddr *)&address, len);
   
    if(result == -1) 
   {
        perror("oops: client1");
        exit(1);
   }

   write(sockfd, &ch, 1);
   read(sockfd, &ch, 1);
   printf("char from server = %c\n", ch);
   close(sockfd);
   exit(0);
 }


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux