Advertisement
Guest User

Chat Room Application file

a guest
Oct 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <fcntl.h>
  4. #include <sys/stat.h>
  5. #include <unistd.h>
  6. #include <pthread.h>
  7. #include <iostream>
  8. #include <cstdlib>
  9.  
  10. using namespace std;
  11.  
  12. string username;
  13. int stop=0;
  14.  
  15. void* reader(void* directory){
  16. char* myfifo = (char*) directory;
  17. mkfifo(myfifo,0606);
  18. char readArr[256];
  19. int ReadFD, delay;
  20. while(1){
  21. if(delay>0){
  22. usleep(10000);
  23. delay=0;
  24. }
  25. ReadFD = open(myfifo,O_RDONLY);
  26. read(ReadFD,readArr,sizeof(readArr));
  27. string text = readArr;
  28. cout<<text<<endl;
  29. if(text.substr(0,username.length()) == username){
  30. int WriteFd = open(myfifo, O_WRONLY);
  31. write(WriteFd,readArr,sizeof(readArr)+1);
  32. close(WriteFd);
  33. delay++;
  34. }else{
  35. }
  36. close(ReadFD);
  37. }
  38. pthread_exit(NULL);
  39. }
  40.  
  41. void* write(void* directory){
  42. char* myfifo = (char*) directory;
  43. mkfifo(myfifo,0666);
  44. const char* writeArr;
  45. int WriteFd;
  46. string input;
  47. while(1){
  48. usleep(1000);
  49. cout<<"Enter your message (enter <tab> for help):\n";
  50. getline(cin, input);
  51. if(input=="\t"){
  52. cout<<"Special keywords: 'exit' to close, 'clear' to clear chat screen\n";
  53. }else if(input=="exit"){
  54. cout<<"You have left the chatroom.\n";
  55. stop++;
  56. }else if(input=="clear"){
  57. system("clear");
  58. }else{
  59. WriteFd = open(myfifo,O_WRONLY);
  60. string fulltext = username+": "+input;
  61. writeArr=fulltext.c_str();
  62. write(WriteFd,writeArr,strlen(writeArr)+1);
  63. close(WriteFd);
  64. }
  65. }
  66. pthread_exit(NULL);
  67. }
  68.  
  69. int main(){
  70. system("clear");
  71. cout<<"Please enter your name: ";
  72. getline(cin, username);
  73. system("clear");
  74. cout<<"Hello "<<username<<"\nWelcome to our chat room\n";
  75. pthread_t treader, twriter;
  76. const char* myfifo= "/tmp/my/fifo";
  77. int rc=pthread_create(&treader,NULL,reader,(void*) myfifo);
  78. if(rc){
  79. cout<<"Unable to create thread "<<rc<<endl;
  80. exit(-1);
  81. }
  82.  
  83. rc=pthread_create(&twriter,NULL,writer,(void*) myfifo);
  84.  
  85. if(rc){
  86. cout<<"Unable to create thread "<<rc<<endl;
  87. exit(-1);
  88. }
  89. while(stop==0){
  90. }
  91. return 0;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement