th0m45s5helby

User2.c

Dec 24th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <sys/ipc.h>
  6. #include <sys/msg.h>
  7. #include <string.h>
  8. #define SERVER 1L
  9. typedef struct {
  10. long msg_to;
  11. long msg_fm;
  12. char buffer[BUFSIZ];
  13. } MESSAGE;
  14. int mid,n;
  15. key_t key;
  16. char buff[50];
  17. struct msqid_ds buf;
  18. MESSAGE msg;
  19. int main(int argc, char** argv) {
  20. //Creating a message queue
  21. key = ftok(".", 'z');
  22. if((mid = msgget(key, IPC_CREAT | 0660))<0){
  23. printf("Error Creating Message Queue\n");
  24. exit(-1);
  25. }
  26. //Display Message Queue and Server ID
  27. printf("Message Queue ID: %d\n", mid);
  28. printf("user2 ID: %ld\n", (long)getpid());
  29. //Receiving message from user1, throws and error if input is invalid
  30. if(msgrcv(mid, &msg, sizeof(msg.buffer), SERVER, 0)<0){
  31. perror("msgrcv");
  32. exit(-1);
  33. }
  34. //user2 displays received message
  35. printf("user2 receives:\n");
  36. printf("%s\n", msg.buffer);
  37. //Aquiring user1 PID to message return
  38. long client = msg.msg_fm;
  39. printf("enter the message to send \n");
  40. scanf("%s",buff);
  41. n=strlen(buff);
  42. for(int i=0;i<=n;i++)
  43. {
  44. msg.buffer[i]=buff[i];
  45. }
  46. //prep return message
  47. msg.msg_fm = SERVER;
  48. msg.msg_to = client;
  49. //send converting message back to client, throws and error if input is invalid
  50. if(msgsnd(mid, (struct MESSAGE*)&msg, sizeof(msg.buffer), 0)==-1){
  51. perror("msgsnd");
  52. exit(-1);
  53. }
  54. //server exits
  55. return (EXIT_SUCCESS);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment