Adding examples/ns3/multi_host
[nepi.git] / examples / ns3 / multi_host / code / agent.c
diff --git a/examples/ns3/multi_host/code/agent.c b/examples/ns3/multi_host/code/agent.c
new file mode 100644 (file)
index 0000000..460401c
--- /dev/null
@@ -0,0 +1,53 @@
+/* Sample UDP server */\r
+\r
+#include <sys/socket.h>\r
+#include <netinet/in.h>\r
+#include <stdlib.h>\r
+#include <stdio.h>\r
+#include <strings.h>\r
+\r
+int main(int argc, char**argv)\r
+{\r
+  int sockfd,n;\r
+  struct sockaddr_in servaddr,cliaddr;\r
+  socklen_t len;\r
+  char mesg[1000];\r
+\r
+  printf("DEBUT\n");\r
+  if (argc != 2)\r
+  {\r
+    fprintf(stderr, "usage:  %s <port>\n", argv[0]);\r
+    exit(1);\r
+  }\r
+\r
+  sockfd = socket(AF_INET,SOCK_DGRAM,0);\r
+  if(sockfd < 0){\r
+    perror("socket");\r
+    exit(1);\r
+  }\r
+\r
+  bzero(&servaddr,sizeof(servaddr));\r
+  servaddr.sin_family = AF_INET;\r
+  servaddr.sin_addr.s_addr=htonl(INADDR_ANY);\r
+  servaddr.sin_port = htons(atoi(argv[1]));\r
+  if(bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) < 0){\r
+    perror("bind");\r
+    exit(2);\r
+  }\r
+\r
+  for (;;)\r
+  {\r
+    len = sizeof(cliaddr);\r
+    n = recvfrom(sockfd,mesg,1000,0,(struct sockaddr *)&cliaddr,&len);\r
+    if(n < 0){\r
+      perror("recvfrom");\r
+      continue;\r
+    }\r
+    if(n==1){\r
+       exit(0);\r
+    }\r
+    mesg[n] = 0;\r
+    printf("[%s]\n",mesg);\r
+  }\r
+  printf("FIN\n");\r
+}\r