You are on page 1of 8

CHAT IMPLIMENTATION

CHAT IMPLEMENTATION

SOURCE CODE:
SERVER CODE:

#include<stdlib.h>
#include<stdio.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<string.h>
#include<sys/msg.h>
#include<sys/shm.h>
#include<sys/ipc.h>
#include<arpa/inet.h>
struct msgbuf
{
long type;
char message[20];
}msg1,msg3,msg4;
int ret,shmid;
int r,l,b,ls,w;
int shmid,shmid1,*ptr,*ptr1;
int sockfd,nsockfd;
int id,s1,m;
char buff0[50];
char buff1[50]="WELCOME TO CHAT IMPLEMANTAION";
char bufs[50];
char buff[50],buf[50];

#include"server.h"
int main(int argc,char *argv[])
{

if(argc!=3)

1
CHAT IMPLIMENTATION

{
printf("Wrong Number Of Arrguments");
exit(1);
}

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("socket fails");
exit(1);
}

struct sockaddr_in s,c;

bzero((struct sockaddr_in*)&s,sizeof(s));
s.sin_family=AF_INET;
s.sin_port=htons(atoi(argv[1]));
s.sin_addr.s_addr=inet_addr(argv[2]);

b=bind(sockfd,(struct sockaddr*)&s,sizeof(s));
if(b==-1)
{
perror("bind error");
exit(1);
}

ls=listen(sockfd,5);
if(ls==-1)
{
perror("listen error");
exit(1);
}

l=sizeof(c);

while(1)
{

nsockfd=accept(sockfd,(struct sockaddr*)&c,&l);
if(nsockfd==-1)
{
perror("accept fails");
exit(1);

2
CHAT IMPLIMENTATION

}
if(!fork())
{
r=read(nsockfd,buff0,sizeof(buff));
if(r==-1)
{
perror("read fails");
exit(1);
}
buff[r]='\0';
printf("[server]:%s\n",buff0);

r=write(nsockfd,buff1,strlen(buff1));
if(r==-1)
{
perror("WRITE ERROR:");
exit(1);
}
shmid=shmget((key_t)11,1000,IPC_CREAT|0666);
if(shmid==-1)
{
perror("SHMID ERROR:");
exit(1);
}
shmid1=shmget((key_t)11,1000,IPC_CREAT|0666);
if(shmid1==-1)
{
perror("SHMID ERROR:");
exit(1);
}
ptr=(int*)shmat(shmid,0,SHM_RDONLY);
ptr1=(int*)shmat(shmid,0,SHM_RDONLY);
if(ptr1==NULL)
{
perror("PTR ERROR:");
exit(1);
}
printf("%d",*ptr);
if(*ptr==8888&&*ptr1==8889)
{

id = msgget((key_t)778,IPC_CREAT|0666);

3
CHAT IMPLIMENTATION

if(id==-1)
{
perror("MSG ID ERROR:");
exit(1);
}

while(1)
{

msg1.type=104;
m = msgrcv(id,(struct msg*)&msg1,sizeof(msg1),104,0);
//printf("[server]%s\n",msg1.message);

if(msg1.message[0] == 's')
{

msg4.type = 204;

s1 = msgsnd(id,(struct msg*)&msg4,sizeof(msg4),0);
if(s1 == -1)
{
perror("meesage sending error");
exit(1);
}
//printf("%s\n",msg4.message);
}

else if(msg1.message[0] =='r')


{
msg4.type=204;
m = msgrcv(id,(struct msg*)&msg4,sizeof(msg4),204,0);
if(m == -1)
{
perror("message receving error");
exit(1);
}
//printf("%s\n",msg4.message);
}

}
close(nsockfd);
} //exit(1);
}

4
CHAT IMPLIMENTATION

}
}

CLIENT CODE:

#include<stdlib.h>
#include<sys/types.h>
#include<signal.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/msg.h>
#include<arpa/inet.h>
struct msgbuf
{
long type;
char message[50];
}msg1,msg2;

int shid=8888,shmid,*ptr;
int sockfd,l,i=0,r,rd,ch,m,f,b,c;
int id,s1;
char buff0[50]="COMM B|W CLIENT1 SERVER";
char buff1[50];

#include"client.h"int main(int argc,char *argv[])


{

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("socket fails");
exit(1);
}

struct sockaddr_in c,s;


c.sin_family=AF_INET;

5
CHAT IMPLIMENTATION

c.sin_port=htons(atoi(argv[1]));
c.sin_addr.s_addr=inet_addr(argv[2]);

l=sizeof(c);

r=connect(sockfd,(struct sockaddr*)&c,l);/*connecting to server*/


if(r==-1)
{
perror("accept fails");
exit(1);
}
r=write(sockfd,buff0,strlen(buff0));
if(r==-1)
{
perror("WRITE fails");
exit(1);
}
r=read(sockfd,buff1,sizeof(buff1));
if(r==-1)
{
perror("read fails");
exit(1);
}
buff1[r]='\0';
printf("[client]:%s\n",buff1);
id=msgget((key_t)779,IPC_CREAT|0666);
if(id==-1)
{
perror("MSG ID ERROR:");
exit(1);
}

while(1)
{
msg1.type=104;
printf("enter s or r\n");
scanf("%c",msg1.message);
sleep(1);

if(msg1.message[0] == 's')
{

msg2.type = 204;

6
CHAT IMPLIMENTATION

printf("type msg to send\n");


r=read(0,msg2.message,sizeof(msg2.message));
if(r==-1)
{
perror("read fails");
exit(1);
}
//fgets(msg2.message,sizeof(msg2.message),stdin);

s1 = msgsnd(id,(struct msg*)&msg2,sizeof(msg2),0);
if(s1 == -1)
{
perror("meesage sending error");
exit(1);
}

printf("msg sending\n");
}
else if(msg1.message[0] =='r')
{
msg2.type=204;
m = msgrcv(id,(struct msg*)&msg2,sizeof(msg2),204,0);
if(m == -1)
{
perror("message receving error");
exit(1);
}
r=write(1,msg2.message,strlen(msg2.message));
if(r==-1)
{
perror("WRITE fails");
exit(1);
}

//fputs(msg2.message,stdout);
//printf("%s\n",msg2.message);

}
}
shmid=shmget((key_t)10,1000,IPC_CREAT|0666);
if(shmid==-1)
{
perror("SHMID ERROR:");

7
CHAT IMPLIMENTATION

exit(1);
}
ptr=(int*)shmat(shmid,0,0);
if(ptr==NULL)
{
perror("PTR ERROR:");
exit(1);
}
ptr=&shid;
}

You might also like