Guest User

Untitled

a guest
Jun 18th, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.67 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <unistd.h>
  4. #include <string.h>
  5. #include <pthread.h>
  6. #include <sys/types.h>
  7. #include <sys/socket.h>
  8. #include <sys/un.h>
  9. #include <arpa/inet.h>
  10. #include <sys/epoll.h>
  11. #include <errno.h>
  12. #include <signal.h>
  13. #include <string.h>
  14.  
  15.  
  16. typedef struct{
  17. int type;
  18. int arg1;
  19. int arg2;
  20. int result;
  21. char name[50];
  22. }Msg;
  23.  
  24. #define WRITE(format, ...) { char buffer[255]; sprintf(buffer, format, ##__VA_ARGS__); write(1, buffer, strlen(buffer));}
  25. #define FAILURE_EXIT(format, ...) { char buffer[255]; sprintf(buffer, format, ##__VA_ARGS__); write(1, buffer, strlen(buffer));exit(-1);}
  26.  
  27.  
  28. int web_fd, epoll;
  29. struct sockaddr_in server_addr;
  30. Msg msg;
  31. struct sockaddr msg_addr;
  32.  
  33.  
  34. int main(int argc, char *argv[]){
  35.  
  36.  
  37. if((web_fd = socket(AF_INET, SOCK_DGRAM,0)) == -1) FAILURE_EXIT("Failed to create communication endpoint web_fdn");
  38. int yes=1;
  39. if (setsockopt(web_fd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) == -1) FAILURE_EXIT("setsockopt web_fdn");
  40.  
  41.  
  42. server_addr.sin_family = AF_INET;
  43. server_addr.sin_port = htons(9992);
  44. server_addr.sin_addr.s_addr = INADDR_ANY;
  45.  
  46. if(bind(web_fd,(const struct sockaddr*) &server_addr,sizeof(struct sockaddr)) == -1) FAILURE_EXIT("Failed to assign server_addr to a web_fd: %sn",strerror(errno));
  47.  
  48. epoll = epoll_create1(0);
  49. if(epoll == -1) FAILURE_EXIT("Failed to create new epoll instance: %sn",strerror(errno));
  50. struct epoll_event event;
  51. event.events = EPOLLIN;
  52. event.data.fd = web_fd;
  53. if(epoll_ctl(epoll,EPOLL_CTL_ADD,web_fd,&event)== -1) FAILURE_EXIT("Failed to register web_fd file descriptor on epoll instance: %sn",strerror(errno));
  54.  
  55. printf("Server starts loop.n");
  56.  
  57. while(1){
  58.  
  59. struct epoll_event event;
  60. WRITE("Waiting for client message...n");
  61. int nfd = epoll_wait(epoll,&event,1,-1);
  62.  
  63. if(event.data.fd == web_fd){
  64.  
  65. recvfrom(event.data.fd,&msg,sizeof(Msg),0 ,&msg_addr,0);
  66. WRITE("Received message from client %sn",msg.name);
  67. strcpy(msg.name,"Second message");
  68. sendto(event.data.fd,&msg,sizeof(Msg),0 ,(struct sockaddr*)&msg_addr, (socklen_t) sizeof(msg_addr) );
  69.  
  70.  
  71. }else{
  72. WRITE("Unknown descriptorn");
  73. }
  74. }
  75. }
  76.  
  77. #include <stdlib.h>
  78. #include <stdio.h>
  79. #include <unistd.h>
  80. #include <string.h>
  81. #include <pthread.h>
  82. #include <sys/types.h>
  83. #include <sys/socket.h>
  84. #include <sys/un.h>
  85. #include <arpa/inet.h>
  86. #include <sys/epoll.h>
  87. #include <errno.h>
  88. #include <signal.h>
  89. #include <string.h>
  90.  
  91. typedef struct{
  92. int type;
  93. int arg1;
  94. int arg2;
  95. int result;
  96. char name[50];
  97. }Msg;
  98.  
  99. #define WRITE(format, ...) { char buffer[255]; sprintf(buffer, format, ##__VA_ARGS__); write(1, buffer, strlen(buffer));}
  100. #define FAILURE_EXIT(format, ...) { char buffer[255]; sprintf(buffer, format, ##__VA_ARGS__); write(1, buffer, strlen(buffer));exit(-1);}
  101.  
  102.  
  103. int socket_fd;
  104. struct sockaddr_in msg_addr;
  105. Msg msg;
  106.  
  107.  
  108. int main(int argc, char *argv[]){
  109.  
  110. struct sockaddr_in msg_addr;
  111. msg_addr.sin_family = AF_INET;
  112. msg_addr.sin_addr.s_addr =INADDR_ANY;
  113. msg_addr.sin_port = htons(9992);
  114.  
  115. socket_fd = socket(AF_INET, SOCK_DGRAM,0);
  116. if(socket_fd == -1) FAILURE_EXIT("Failed to create client socketn");
  117.  
  118. if(connect(socket_fd, (const struct sockaddr*) &msg_addr, sizeof(struct sockaddr)) == -1) FAILURE_EXIT("Failed to assign server_addr to a web_fd: %sn",strerror(errno));
  119.  
  120. strcpy(msg.name,"First message ");
  121. sendto(socket_fd,&msg,sizeof(Msg),0 ,(struct sockaddr*)&msg_addr,(socklen_t) sizeof(Msg));
  122.  
  123. WRITE("Waiting..n");
  124. recvfrom(socket_fd,&msg,sizeof(Msg),0 ,0,0);
  125. WRITE("f %sn",msg.name);
  126.  
  127.  
  128. WRITE("I registeredn");
  129.  
  130. sleep(400);
  131.  
  132.  
  133. }
Add Comment
Please, Sign In to add comment