Add udp output functionality
[udpcat.git] / udpcat.cc
index 0b9d85c..84279fe 100644 (file)
--- a/udpcat.cc
+++ b/udpcat.cc
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: udpcat.cc 56 2009-05-13 13:33:24Z g0dil $
 //
 // Copyright (C) 2009 
 // Fraunhofer Institute for Open Communication Systems (FOKUS)
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
-int main(int argc, char ** argv)
+void udpIn(senf::INet4SocketAddress addr)
 {
-    senf::UDPv4ClientSocketHandle handle (
-        senf::INet4SocketAddress(boost::lexical_cast<unsigned>(std::string(argv[1]))));
-    
+    senf::UDPv4ClientSocketHandle handle (addr);
     for (;;)
         std::cout << handle.read() << std::flush;
 }
 
+void udpOut(senf::INet4SocketAddress addr)
+{
+    senf::UDPv4ClientSocketHandle handle;
+    std::string line;
+    while (getline(std::cin, line)) {
+        line += "\n";
+        handle.writeto(addr, line);
+    }
+}
+
+int main(int argc, char ** argv)
+{
+    switch (argc) {
+    case 2:
+        udpIn(senf::INet4SocketAddress(boost::lexical_cast<unsigned>(std::string(argv[1]))));
+        break;
+    case 3:
+        udpOut(senf::INet4SocketAddress(senf::INet4Address::from_string(argv[1]),
+                                        boost::lexical_cast<unsigned>(std::string(argv[2]))));
+        break;
+    default:
+        std::cerr << "Usage:\n" "    udpcat ip port\n" "    udpcat port\n" << std::flush;
+        break;
+    }
+    return 1;
+}
+
 ///////////////////////////////cc.e////////////////////////////////////////
 #undef prefix_
 //#include "udpcat.mpp"