Professional Documents
Culture Documents
Chat Implementation: Source Code: Server Code
Chat Implementation: Source Code: Server Code
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);
}
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);
}
}
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];
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("socket fails");
exit(1);
}
5
CHAT IMPLIMENTATION
c.sin_port=htons(atoi(argv[1]));
c.sin_addr.s_addr=inet_addr(argv[2]);
l=sizeof(c);
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
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;
}