np

Published on January 2017 | Categories: Documents | Downloads: 107 | Comments: 0 | Views: 847
of 14
Download PDF   Embed   Report

Comments

Content

//message queues Server #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdio.h> #include <string.h> #define MSGSZ 128 /* * * Declare the message structure. * */ typedef struct msgbuf { long mtype; char mtext[MSGSZ]; } message_buf; main() { int msqid; int msgflg = IPC_CREAT 0666; key_t key; message_buf sbuf; size_t buf_length; /* * * Get the message queue id for the * * "name" 1234, which was created by * * the server. * */ key = 1234; (void) fprintf(stderr, "\nmsgget: Calling msgget(%#lx,\ %#o)\n", key, msgflg); if ((msqid = msgget(key, msgflg )) < 0) { perror("msgget"); exit(1); } else (void) fprintf(stderr,"msgget: msgget succeeded: msqid = %d\n", msqid); /* * * We'll send message type 1 * */ sbuf.mtype = 1; (void) fprintf(stderr,"msgget: msgget succeeded: msqid = %d\n", msqid); (void) strcpy(sbuf.mtext, "Did you get this?"); (void) fprintf(stderr,"msgget: msgget succeeded: msqid = %d\n", msqid); buf_length = strlen(sbuf.mtext) + 1 ; /* * * Send a message. * */ if (msgsnd(msqid, &sbuf, buf_length, IPC_NOWAIT) < 0) { printf ("%d, %d, %s, %d\n", msqid, sbuf.mtype, sbuf.mtext, buf_length); perror("msgsnd"); exit(1); } else printf("Message: \"%s\" Sent\n", sbuf.mtext); exit(0); }

//message queues Client # include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> #include <stdio.h> #define MSGSZ 128 /* * * Declare the message structure. * */ typedef struct msgbuf { long mtype; char mtext[MSGSZ]; } message_buf; main() { int msqid; key_t key; message_buf rbuf; /* * * Get the message queue id for the * * "name" 1234, which was created by * * the server. * */ key = 1234; if ((msqid = msgget(key, 0666)) < 0) { perror("msgget"); exit(1); } /* * * Receive an answer of message type 1. * */ if (msgrcv(msqid, &rbuf, MSGSZ, 1, 0) < 0) { perror("msgrcv"); exit(1); } /* * * * Print the answer. */ printf("%s\n", rbuf.mtext); exit(0);

} OUTPUT:: @server: msgget: Calling msgget(0x4d2,01666) msgget: msgget succeeded: msqid = 0 msgget: msgget succeeded: msqid = 0 msgget: msgget succeeded: msqid = 0 Message: "Did you get this?" Sent @client Did you get this? SEMAPHORES:: #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> #include <unistd.h> #include <string.h>

#include <errno.h> int main(void) { pid_t pid; int *shared; /* pointer to the shm */ int shmid; shmid = shmget(IPC_PRIVATE, sizeof(int), IPC_CREAT 0666); printf("Shared Memory ID=%d",shmid); if (fork() == 0) { /* Child */ /* Attach to shared memory and print the pointer */ shared = shmat(shmid, (void *) 0, 0); printf("Child pointer %u\n", shared); *shared=1; printf("Child value=%d\n", *shared); sleep(2); printf("Child value=%d\n", *shared); } else { /* Parent */ /* Attach to shared memory and print the pointer */ shared = shmat(shmid, (void *) 0, 0); printf("Parent pointer %u\n", shared); printf("Parent value=%d\n", *shared); sleep(1); *shared=42; printf("Parent value=%d\n", *shared); sleep(5); shmctl(shmid, IPC_RMID, 0); } return 0; } OUTPUT:: Shared Memory ID=753679Parent pointer 3078733824 Parent value=0 Shared Memory ID=753679Child pointer 3078733824 Child value=1 Parent value=42 Child value=42 //UDPServer #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<arpa/inet.h> #include<netinet/in.h> #include<stdlib.h> #include<errno.h> #include<string.h> int main() { int dt,sd,len; char msg[1000],sn[1000]; struct sockaddr_in serv,client; if((sd=socket(AF_INET,SOCK_DGRAM,0))<0) { perror("Socket Creation Error"); exit(1); } bzero((char *)&serv,sizeof(serv)); serv.sin_family=AF_INET; serv.sin_port=htons(5000); serv.sin_addr.s_addr=inet_addr("127.0.0.1");

if(bind(sd,(struct sockaddr *)&serv,sizeof(serv))<0) { perror("Binding Error"); exit(1); } len=sizeof(struct sockaddr); while(1) { dt=recvfrom(sd,msg,sizeof(msg),0,(struct sockaddr *)&client,&len ); printf("UDP:Client : %s\n",msg); printf("UDP:Server : "); scanf("%s",sn); dt=sendto(sd,sn,strlen(sn),0,(struct sockaddr *)&client,sizeof(c lient)); } close(serv); }

//UDPClient #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<arpa/inet.h> #include<netinet/in.h> #include<stdlib.h> #include<errno.h> #include<string.h> int main() { int dt,sd,len; char msg[1000],sn[1000]; struct sockaddr_in serv,client; if((sd=socket(AF_INET,SOCK_DGRAM,0))<0) { perror("Socket Creation Error"); exit(1); } bzero((char *)&serv,sizeof(serv)); serv.sin_family=AF_INET; serv.sin_port=htons(5000); serv.sin_addr.s_addr=inet_addr("127.0.0.1"); len=sizeof(struct sockaddr); while(1) {

printf("UDP:Client : "); scanf("%s",msg); dt=sendto(sd,msg,strlen(msg),0,(struct sockaddr *)&serv,sizeof(s erv)); dt=recvfrom(sd,sn,sizeof(sn),0,(struct sockaddr *)&serv,&len); printf("UDP:Server : %s\n",sn); } close(serv); } output: @SERVER:: $ gcc UDPServer.c c $./a.out /*waiting for client*/ UDP:Client : hello UDP:Client : hello UDP:Server : bbye e UDP:Client :(cursor waiting) ctrl c to quit @CLIENT: $ gcc UDPClient. $./a.out

UDP:Server : bby

FIFO #include<stdio.h> #include<string.h> #include<sys/types.h> #include<fcntl.h> #include<unistd.h> #include<sys/stat.h> #define FIFO_NAME "american" main() { char s[300]; int num,fd; char *filename="test.c"; mknod(FIFO_NAME,S_IFIFO 0666,0); printf("Waiting for readers......\n"); fd=open("filename",O_WRONLY O_CREAT O_TRUNC); if(fd==-1) { perror("File Not created"); exit(0); } else printf ("File created with name %s",filename); printf(" Now We can read\n"); printf("enter some text:"); while(scanf("%s",s)!=feof(stdin)) { if((num=write(fd,s,strlen(s)))==-1)

perror("It is not Write"); else printf("\n Wrote %d bytes \n",num); } } OUTPUT:: Waiting for readers... File created with name test.c Now we can read Hi Wrote 2 bytes PIPES:: #include<stdio.h> #include<stdlib.h> #include<unistd.h> /*function to handle child process work*/ void do_child(int data_pipe[]) { int c; int rc; close(data_pipe[1]); printf("\nThe data is:"); while((rc=read(data_pipe[0],&c,1))>0) { putchar(c); } exit(0); } void do_parent(int data_pipe[]) { int c; int rc; close(data_pipe[0]); printf("Enter data:"); while((c=getchar())>0) { rc=write(data_pipe[1],&c,1); if(rc==-1) { perror("Parent:write failed"); close(data_pipe[1]); exit(1); } } close(data_pipe[1]); exit(0); } main() { int data_pipe[2]; int pid; int rc; rc=pipe(data_pipe); if(rc==-1) { perror("pipe error"); exit(1); }

pid=fork(); switch(pid) { case -1:perror("Fork failed"); exit(1); case 0:do_child(data_pipe); break; default:do_parent(data_pipe); } } OUTPUT:: Enter data: this is using pipes The data is:this is using pipes /* Program For Connection Oriented Echo Server */ /* *************** coes.c ***************** */ #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<errno.h> #include<arpa/inet.h> #include<string.h> #include<stdlib.h> int main(int argc,char *argv[]) { char msg[100]; int sfd,nsfd,i; struct sockaddr_in server; if((sfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("Scoket error"); exit(1); } bzero((char*)&server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(5000); server.sin_addr.s_addr=htonl(0L); if(bind(sfd,(struct sockaddr *)&server,sizeof(server))<0) { perror("bind error..."); exit(1); } if(listen(sfd,5)<0) { perror("listen error.."); exit(1); } if((nsfd=accept(sfd,0,0))<0)

{ perror("accept error"); exit(1); } i=read(nsfd,msg,sizeof(msg)); msg[i-1]='\0'; printf("Client Mesage : %s\n",msg); write(nsfd,msg,i); close(sfd); return(0); } /*Program For Connection Oriented Echo Client*/ #include<stdio.h> #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #include<errno.h> #include<stdlib.h> #include<string.h> int main(int agrc,char *argv[]) { char to[80],from[80]; int sfd,i,j; struct sockaddr_in server; if ((sfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket error..."); exit(1); } bzero((char*)&server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(5000); server.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(sfd,(struct sockaddr *)&server,sizeof(server))<0) { perror("connect error.."); exit(1); } write(0,"Enter message : ",sizeof("Enter message : ")); i=read(0,to,sizeof(to)); to[i-1]='\0'; j=write(sfd,to,i); i=read(sfd,from,sizeof(from)); from[i-1]='\0'; printf("Server Message : %s\n",from); close(sfd); }

Output:: client server $ gcc coes.c $./a.out $gcc coec.c $ ./a.out Enter message:hi

Client message:hi

/* program for connection oriented File server */ #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<string.h> #include<errno.h> #include<stdlib.h> #include<stdio.h> main() { char filename[20]; char buf[80]; int sfd,nsfd,i; FILE *fp; struct sockaddr_in server; if((sfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket error.."); exit(1); } bzero((char *)&server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(5555); server.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sfd,(struct sockaddr *)&server,sizeof(server))<0) { perror("bind error.."); exit(1); } if(listen(sfd,5)<0) { perror("listen error.."); exit(1); } if((nsfd=accept(sfd,0,0))<0) { perror("accept error.."); exit(1); } i=read(nsfd,filename,sizeof(filename)); filename[i-1]='\0'; if(!(fp=fopen(filename,"r"))) { write(nsfd,"File error",sizeof("File error")); } else { while(fgets(buf,79,fp))

{ i=strlen(buf); buf[i]='\0'; write(nsfd,buf,i); } } close(sfd); } /*program for connection oriented file client*/ #include<sys/types.h> #include<sys/socket.h> #include<netinet/in.h> #include<string.h> #include<errno.h> #include<stdlib.h> #include<stdio.h> main() { char filename[20],from[100]; int sfd,i,j,cmp; struct sockaddr_in server; if((sfd=socket(AF_INET,SOCK_STREAM,0))<0) { perror("socket error.."); exit(1); } bzero((char *)&server,sizeof(server)); server.sin_family=AF_INET; server.sin_port=htons(5555); server.sin_addr.s_addr=inet_addr("127.0.0.1"); if(connect(sfd,(struct sockaddr *)&server,sizeof(server))<0) { perror("connect error.."); exit(1); } write(1,"Enter filename:",sizeof("Enter filename:")); i=read(0,filename,sizeof(filename)); filename[i-1]='\0'; write(sfd,filename,i); while((j=read(sfd,from,sizeof(from)))) { from[j-1]='\0'; write(1,from,j); } close(sfd); return 0; }

OUTPUT:: client server $ gcc fileserver.c

$./a.out $gcc fileclient.c $ ./a.out Enter filename:test This is a test file /* tcpserver.c */ #include #include #include #include #include #include #include #include #include <sys/types.h> <sys/socket.h> <netinet/in.h> <arpa/inet.h> <stdio.h> <stdlib.h> <unistd.h> <errno.h> <string.h>

/*waiting for client*/

int main() { int sock, connected, bytes_recieved , true = 1; char send_data [1024] , recv_data[1024]; struct sockaddr_in server_addr,client_addr; int sin_size; if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("Socket"); exit(1); } if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) =-1) { perror("Setsockopt"); exit(1); } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(5000); server_addr.sin_addr.s_addr = INADDR_ANY; bzero(&(server_addr.sin_zero),8); if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) { perror("Unable to bind"); exit(1); } if (listen(sock, 5) == -1) { perror("Listen"); exit(1); } printf("\nTCPServer Waiting for client on port 5000"); fflush(stdout); while(1) {

sin_size = sizeof(struct sockaddr_in); connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size); printf("\n I got a connection from (%s , %d)", inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port)); while (1) { printf("\n SEND (q or Q to quit) : "); scanf("%s",&send_data); if (strcmp(send_data , "q") == 0 strcmp(send_data , "Q") == 0) { send(connected, send_data,strlen(send_data), 0); close(connected); break; } else send(connected, send_data,strlen(send_data), 0); bytes_recieved = recv(connected,recv_data,1024,0); recv_data[bytes_recieved] = '\0'; if (strcmp(recv_data , "q") == 0 { close(connected); break; } strcmp(recv_data , "Q") == 0)

else printf("\n RECIEVED DATA = %s " , recv_data); fflush(stdout); } } close(sock); return 0; }

/* tcpclient.c */ #include #include #include #include #include #include #include #include #include <sys/socket.h> <sys/types.h> <netinet/in.h> <netdb.h> <stdio.h> <string.h> <stdlib.h> <unistd.h> <errno.h>

int main()

{ int sock, bytes_recieved; char send_data[1024],recv_data[1024]; struct hostent *host; struct sockaddr_in server_addr; host = gethostbyname("127.0.0.1"); if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("Socket"); exit(1); } server_addr.sin_family = AF_INET; server_addr.sin_port = htons(5000); server_addr.sin_addr = *((struct in_addr *)host->h_addr); bzero(&(server_addr.sin_zero),8); if (connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) { perror("Connect"); exit(1); } while(1) { bytes_recieved=recv(sock,recv_data,1024,0); recv_data[bytes_recieved] = '\0'; if (strcmp(recv_data , "q") == 0 { close(sock); break; } strcmp(recv_data , "Q") == 0)

else printf("\nRecieved data = %s " , recv_data); printf("\nSEND (q or Q to quit) : "); scanf("%s",&send_data); if (strcmp(send_data , "q") != 0 && strcmp(send_data , "Q") != 0) send(sock,send_data,strlen(send_data), 0); else { send(sock,send_data,strlen(send_data), 0); close(sock); break; } } return 0; }

OUTPUT:: client server $ gcc tcpserver.c $./a.out $gcc tcpclient.c /*waiting for client*/ $ ./a.out I got a connection from 192.168.100.101 SEND(q or Q to quit): hi Received data:hi SEND(q or Q to quit):how_are_you Received data:how_are_you SEND(q or Q to quit):

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close