Spread the love

Brief Description about Project –

This project uses message queue communication service of Linux . This project uses a file handling concept of C programming language to store login ID’s and Password’s in database. It uses a message queue to communicate between two clients.

Understand Message Queue Communication –

queue

CODE FOR PROJECT –

#include<stdio.h>
#include<stdlib.h>
#include<sys/ipc.h>
#include<sys/types.h>
#include<sys/msg.h>
#include<unistd.h>
#include<string.h>
struct whatsapp
{
        char id[20];
        char pswd[20];
};

struct whatsapp user1;
void login(FILE *);
void send();
void rec();
void signup(FILE *);
struct msgqbuf
{
        long mtype;
        char mtext[50];
};
typedef struct msgqbuf msgque;

int main()
{
	int i,z;
	FILE *fp; 
        char ch;
        char str[50];
	fp=fopen("database","r+");
	if(fp==NULL)
	{
		perror("\nError in opening file...\n");
		exit(1);
	}

        do
        {
                system("clear");
                printf("\n************************\n* Linux Chat Messenger *\n************************\n\n");
                printf("Enter Choices:\n\n1.Login\n\n2.New User\n\n");
                scanf("%d",&i);
		switch(i)
		{
                	case 1:	
				rewind(fp);
				login(fp);
				break;
			case 2:
				signup(fp);
				break;
		        default:
				printf("\nInvalid Options\n");
		}
                sleep(5);
                system("clear");
                printf("\nDo U wish to continue chat....\nY:Yes\nN:No\n");
		scanf(" %c",&ch);
	}while(ch=='y'||ch=='Y');
	fclose(fp);
	return 0;
}
void send()
{
        int msgqid,siz,siz1,i,client_id,ans; 
	char ch,client_[2];
	msgque q,q1;	
	printf("\nEnter Client ID to chat:-\n");
	printf("Client ID's are:\n1.ID-0 Name-Mohit\n2.ID-1 Name-Manoj\n");
        scanf("%d",&client_id);	
	switch(client_id)
	{
	case 0:
        	msgqid=msgget(1234,0666|IPC_CREAT);
        	if(msgqid==-1)
        	{
         	        perror("\nMsg Queue Can't Create...\n");
                	exit(1);
        	}
        	else
        	{
                	printf("\nMsg Queue Created Successfully...\n");
                	q.mtype=0;
          send_again: 	printf("\nEnter Message:\n");
			scanf("%s",q.mtext);
			while(strcmp(q.mtext,"bye")!=0)
			{
				siz=msgsnd(msgqid,q.mtext,strlen(q.mtext),0);
                		if(siz==-1)
                		{
                			perror("\nMsg Sending Failed....\n");
                        		exit(1);
                		}	
                		else if(siz==0)
                		{
                 	       		printf("\nMsg Sent Successfully...\n");
					printf("\nWhat do you want now?\n1.Send\n2.Recieve\n");
					scanf("%d",&ans);
					
					if(ans==1)
					{
						goto send_again;	
					}
					else
					{
						rec();
					}
				}
			}
		}
//	rec();
			break;
	case 1:
        	msgqid=msgget(1234,0666|IPC_CREAT);
        	if(msgqid==-1)
        	{
         	       perror("\nMsg Queue Can't Create...\n");
                       exit(1);
        	}
        	else
        	{
                	printf("\nMsg Queue Created Successfully...\n");
                	q.mtype=0;
    again_send2:            	printf("\nEnter Message:\n");
			scanf("%s",q.mtext);
			while(strcmp(q.mtext,"bye")!=0)
			{
				siz=msgsnd(msgqid,q.mtext,strlen(q.mtext),0);
                		if(siz==-1)
                		{
                			perror("\nMsg Sending Failed....\n");
                        		exit(1);
                		}	
                		else if(siz==0)
                		{
                 	       		printf("\nMsg Sent Successfully...\n");
					printf("\nWhat do you want now?\n1.Send\n2.Recieve\n");
					scanf("%d",&ans);
					if(ans==1)
					{
						goto again_send2;	
					}
					else
					{
						rec();
					}
				}
			}
		}
	break;
	default:
		break;
}
}
void rec()
{

        int msgqid,siz,siz1,i,ans;
        char ch;
        msgque q,q1;    
        msgqid=msgget(1234,0666|IPC_CREAT);
        if(msgqid==-1)
        {
                perror("\nMsg Queue Can't Create...\n");
                exit(1);
        }
        else
        {
                printf("\nMsg Queue Created Successfully...\n");
                q.mtype=0;
                printf("\nNow reading\n");
		while(strcmp(q.mtext,"bye")!=0)
		{                
                	siz=msgrcv(msgqid,q.mtext,BUFSIZ,0,0);
                	if(siz1==-1)
                	{
	                	perror("\nMsg Recieve Error\n");
                        	exit(1);
                	}
                	else
                	{
                        	printf("\nMsg Recieved Successfully...\n");
                        	printf("\nMsg:%s\tSize:%d\n",q.mtext,siz);
				printf("\nWhat do you want now?\n1.Send\n2.Recieve\n");
				scanf("%d",&ans);
				if(ans==1)
				{
					send();		
				}
				else
				{
					rec();
                		}
			}
		}
	}
}

void login(FILE *fp)
{
	int k,z;
	char u[20],p[20],ch;
        int n=0;
        system("clear");
        printf("\nLogin into your messenger\n");
        printf("\nWarning:3 attempts only\n");
        login:
                fread(&user1,sizeof(user1),1,fp);
                printf("\nEnter User ID:");
                scanf("%s",u);
                printf("\nEnter Password:");
                scanf("%s",p);
                if(strcmp(user1.id,u)==0 && strcmp(user1.pswd,p)==0)
                {
                        printf("Congratulations!");
                        sleep(1);
			system("clear");
			printf("\nChoose what to do???\n1:Send a Message\n2.Read a message\n");
			scanf("%d",&z);
			if(z==1)
                        send();
			else if(z=2)
			rec();
                }
                else
                {
                        while(n<2)
                        {
                                n++;
                                printf("\nIncorrect user-id or password,%d trials left.\n",3-n);
                                goto login;
                                if(n==3)
                                {
                                        printf("\nTry Later\n");
                                        break;
                                }
                        }
                }
}
        
void signup(FILE *fp)
{
	int st=0,num=0,i,chr=0;
again:	
	num=0;
	chr=0;
	printf("\nEnter Mobile Number as a User ID to Create:\n");
	scanf("%s",&user1.id);
	for(i=1;i<strlen(user1.id);i++)
	{
		if(user1.id[i]>'0' && user1.id[i]<='9')
		{
			num=1;
		}
		else if(user1.id[i]>='a' && user1.id[i]<='z' || user1.id[i]>='A' && user1.id[i]<='Z')
		{
			chr=1;
		}

	}
	if(chr==1 && num==1)
	{
		goto again;
	}
	else if(chr==1)
	{
		goto again;
	}
	else 
	{
		st=1;
	}
	printf("\nEnter password to Create:\n");
	scanf("%s",&user1.pswd);
	st=2;
	printf("\nCongratulations.....Your registration is Completed...Thank You!!\n\n \nYou are being redirected to Main Portal.....\n");
        switch(st)
        {
        	case 2:
                       fwrite(&user1,sizeof(user1),1,fp);
                       printf("\nRecord saved successfully\n");
                       break;
               default:
                       perror("\nData can't be saved because of wrong entries.\n");
                       exit(1);
        }
	sleep(1);
}


To Get the Documentation of this Project, Kindly Contact Us.