J. TCP Chat Client/Server Programming in Unix Using C Programmin

TCP Chat Client Example

/*TCP Chat Client Example Program In C*/

#include<sys/types.h>
#include<sys/socket.h>
#include<fcntl.h>
#include<netinet/in.h>
#include<stdio.h>
#include<arpa/inet.h>
#include<string.h>

int main() {
   int sfd;
   fd_set rset;
   char buff[1024] = " ";
   struct sockaddr_in server;
   sfd = socket(AF_INET, SOCK_STREAM, 0);
   if (sfd < 0) {
      printf("not created\n");
   }
   bzero(&server, sizeof (struct sockaddr_in));
   server.sin_family = AF_INET;
   server.sin_port = htons(1005);
   inet_aton("172.16.29.110", &server.sin_addr);
   printf("connect=%d\n", connect(sfd, (struct sockaddr *) &server, sizeof (server)));
   for (;;) {
      FD_ZERO(&rset);
      FD_SET(0, &rset);
      FD_SET(sfd, &rset);
      select(sfd + 1, &rset, NULL, NULL, NULL);
      if (FD_ISSET(0, &rset)) {
         printf("Enter the message \n");
         scanf("%s", buff);
         write(sfd, buff, strlen(buff));
      }
      if (FD_ISSET(sfd, &rset)) {
         read(sfd, buff, 1024);
         printf("message received %s\n", buff);
      }
   }
   close(sfd);
}

TCP Chat Server Example

/*TCP Chat Server Example Program In C*/

#include<sys/types.h>
#include<sys/socket.h>
#include<fcntl.h>
#include<netinet/in.h>
#include<stdio.h>
#include<arpa/inet.h>
#include<string.h>

int main() {
   int sfd, cfd;
   fd_set rset;
   char buff[1024] = " ";
   struct sockaddr_in server;
   sfd = socket(AF_INET, SOCK_STREAM, 0);
   if (sfd < 0) {
      printf("not created\n");
   }
   bzero(&server, sizeof (struct sockaddr_in));
   server.sin_family = AF_INET;
   server.sin_port = htons(1005);
   inet_aton("172.16.29.110", &server.sin_addr);
   printf("bind=%d\n", bind(sfd, (struct sockaddr *) &server, sizeof (server)));
   listen(sfd, 7);
   cfd = accept(sfd, NULL, NULL);
   for (;;) {
      FD_ZERO(&rset);
      FD_SET(0, &rset);
      FD_SET(cfd, &rset);
      select(cfd + 1, &rset, NULL, NULL, NULL);
      if (FD_ISSET(0, &rset)) {
         printf("Enter the message \n");
         scanf("%s", buff);
         write(cfd, buff, strlen(buff));
      }
      if (FD_ISSET(cfd, &rset)) {
         read(cfd, buff, 1024);
         printf("message received %s\n", buff);
      }
   }
   close(cfd);
   close(sfd);
}

Sample Output

[root@localhost chat]# ./tcpchatserver
bind=0

Enter the message 
kala
message received hema

Enter the message 


[root@localhost chat]# ./tcpchatclient
connect=0
message received kala

Enter the message 
hema