Permalink
Browse files

Add an 'interfaces' sample program.

  • Loading branch information...
1 parent fea912a commit eb0c39a990ec5439ef762b9a5804bc37ca6c405b @pprindeville committed Dec 14, 2012
View
@@ -22,3 +22,4 @@ projects:
$(MAKE) -C TwitterClient $(MAKECMDGOALS)
$(MAKE) -C WebSocketServer $(MAKECMDGOALS)
$(MAKE) -C SMTPLogger $(MAKECMDGOALS)
+ $(MAKE) -C interfaces $(MAKECMDGOALS)
@@ -0,0 +1,17 @@
+#
+# Makefile
+#
+# $Id: //poco/Main/template/sample.make#4 $
+#
+# Makefile for Poco interfaces
+#
+
+include $(POCO_BASE)/build/rules/global
+
+objects = interfaces
+
+target = interfaces
+target_version = 1
+target_libs = PocoUtil PocoNet PocoFoundation
+
+include $(POCO_BASE)/build/rules/exec
@@ -0,0 +1,8 @@
+#
+# sample.vmsbuild
+#
+# $Id: //poco/Main/template/sample.vmsbuild#3 $
+#
+EXE=interfaces
+interfaces
+<SourceFilesHere>

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{50E4E0CE-7A36-27B1-AAC1-D6501865B669}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\interfaces.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{50E4E0CE-7A36-27B1-AAC1-D6501865B669}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="src\interfaces.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project>
@@ -0,0 +1,96 @@
+//
+// interfaces.cpp
+//
+// $Id: //poco/1.4/Net/samples/interfaces/src/interfaces.cpp#1 $
+//
+// This sample demonstrates the NetworkInterface class.
+//
+
+
+#include "Poco/Path.h"
+#include "Poco/Exception.h"
+#include "Poco/Net/IPAddress.h"
+#include "Poco/Net/NetworkInterface.h"
+#include <memory>
+#include <iostream>
+
+using Poco::Path;
+using Poco::Exception;
+using Poco::Net::IPAddress;
+using Poco::Net::NetworkInterface;
+
+
+int main(int argc, char** argv)
+{
+ if (argc != 1)
+ {
+ Path p(argv[0]);
+ std::cerr << "usage: " << p.getBaseName() << std::endl;
+ return 1;
+ }
+
+ try
+ {
+ const NetworkInterface::Map map = NetworkInterface::map();
+ for ( NetworkInterface::Map::const_iterator it = map.begin();
+ it != map.end(); ++it) {
+ const NetworkInterface& intf = it->second;
+ std::string sep("");
+
+ std::cout << intf.name() << " [" << intf.index() << "]: ";
+
+ std::cout << "<";
+ if (intf.isUp()) {
+ std::cout << sep << "UP"; sep = ",";
+ }
+ if (intf.isRunning()) {
+ std::cout << sep << "RUNNING"; sep = ",";
+ }
+ if (intf.isLoopback()) {
+ std::cout << sep << "LOOPBACK"; sep = ",";
+ }
+ if (intf.isPointToPoint()) {
+ std::cout << sep << "P2P"; sep = ",";
+ }
+ if (intf.supportsIPv4()) {
+ std::cout << sep << "IPv4"; sep = ",";
+ }
+ if (intf.supportsIPv6()) {
+ std::cout << sep << "IPv6"; sep = ",";
+ }
+ if (intf.supportsBroadcast()) {
+ std::cout << sep << "BCAST"; sep = ",";
+ }
+ if (intf.supportsMulticast()) {
+ std::cout << sep << "MCAST"; sep = ",";
+ }
+
+ std::cout << sep << std::dec << intf.mtu(); sep = ",";
+
+ std::cout << ">" << std::endl;
+
+ const NetworkInterface::AddressList& ipList = intf.addressList();
+
+ NetworkInterface::AddressList::const_iterator ipIt = ipList.begin();
+ NetworkInterface::AddressList::const_iterator ipEnd = ipList.end();
+ for (; ipIt != ipEnd; ++ipIt) {
+ std::cout << " " << ipIt->get<NetworkInterface::IP_ADDRESS>().toString();
+ IPAddress addr;
+ addr = ipIt->get<NetworkInterface::SUBNET_MASK>();
+ if (!addr.isWildcard()) std::cout << '/' << addr.toString() << " (" << addr.prefixLength() << ')';
+ addr = ipIt->get<NetworkInterface::BROADCAST_ADDRESS>();
+ if (!addr.isWildcard()) std::cout << (intf.isPointToPoint() ? " dest " : " bcast ") << addr.toString();
+ std::cout << std::endl;
+ }
+
+ std::cout << std::endl;
+ }
+ }
+ catch (Exception& exc)
+ {
+ std::cerr << exc.displayText() << std::endl;
+ return 1;
+ }
+
+ return 0;
+}

0 comments on commit eb0c39a

Please sign in to comment.