work on python 3 compatibility
diff --git a/examples/port_publisher.py b/examples/port_publisher.py
index 91de063..393beb5 100644
--- a/examples/port_publisher.py
+++ b/examples/port_publisher.py
@@ -9,10 +9,12 @@
   does not influence serial port

 - only one client per connection

 """

-import sys, os, time

-import traceback

-import socket

+import os

 import select

+import socket

+import sys

+import time

+import traceback

 

 import serial

 import serial.rfc2217

@@ -108,7 +110,7 @@
         try:

             self.serial.open()

             self.serial.setRTS(False)

-        except Exception, msg:

+        except Exception as msg:

             self.handle_serial_error(msg)

 

         self.serial_settings_backup = self.serial.getSettingsDict()

@@ -127,7 +129,7 @@
         try:

             self.server_socket.bind( ('', self.network_port) )

             self.server_socket.listen(1)

-        except socket.error, msg:

+        except socket.error as msg:

             self.handle_server_error()

             #~ raise

         if not options.quiet:

@@ -142,7 +144,7 @@
     def close(self):

         """Close all resources and unpublish service"""

         if not options.quiet:

-            print "%s: closing..." % (self.device, )

+            print("%s: closing..." % (self.device, ))

         self.alive = False

         self.unpublish()

         if self.server_socket: self.server_socket.close()

@@ -201,7 +203,7 @@
                     self.buffer_ser2net += data

             else:

                 self.handle_serial_error()

-        except Exception, msg:

+        except Exception as msg:

             self.handle_serial_error(msg)

 

     def handle_serial_write(self):

@@ -211,7 +213,7 @@
             n = os.write(self.serial.fileno(), self.buffer_net2ser)

             # and see how large that chunk was, remove that from buffer

             self.buffer_net2ser = self.buffer_net2ser[n:]

-        except Exception, msg:

+        except Exception as msg:

             self.handle_serial_error(msg)

 

     def handle_serial_error(self, error=None):

@@ -260,7 +262,7 @@
             self.socket.setblocking(0)

             self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

             if not options.quiet:

-                print '%s: Connected by %s:%s' % (self.device, addr[0], addr[1])

+                print('%s: Connected by %s:%s' % (self.device, addr[0], addr[1]))

             self.serial.setRTS(True)

             self.serial.setDTR(True)

             self.rfc2217 = serial.rfc2217.PortManager(self.serial, self)

@@ -268,7 +270,7 @@
             # reject connection if there is already one

             connection.close()

             if not options.quiet:

-                print '%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1])

+                print('%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1]))

 

     def handle_server_error(self):

         """Socket server fails"""

@@ -292,7 +294,7 @@
                 self.socket.close()

                 self.socket = None

                 if not options.quiet:

-                    print '%s: Disconnected' % self.device

+                    print('%s: Disconnected' % self.device)

 

 

 def test():

@@ -355,7 +357,7 @@
             if pid > 0:

                 # exit first parent

                 sys.exit(0)

-        except OSError, e:

+        except OSError as e:

             sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))

             sys.exit(1)

 

@@ -373,7 +375,7 @@
                 if options.pid_file is not None:

                     open(options.pid_file,'w').write("%d"%pid)

                 sys.exit(0)

-        except OSError, e:

+        except OSError as e:

             sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))

             sys.exit(1)

 

@@ -416,7 +418,7 @@
         except KeyError:

             pass

         else:

-            if not options.quiet: print "unpublish: %s" % (forwarder)

+            if not options.quiet: print("unpublish: %s" % (forwarder))

 

     alive = True

     next_check = 0

@@ -439,12 +441,12 @@
                                 7000+num,

                                 on_close=unpublish

                             )

-                            if not options.quiet: print "publish: %s" % (published[device])

+                            if not options.quiet: print("publish: %s" % (published[device]))

                             published[device].open()

                     else:

                         # or when it disappeared

                         if device in published:

-                            if not options.quiet: print "unpublish: %s" % (published[device])

+                            if not options.quiet: print("unpublish: %s" % (published[device]))

                             published[device].close()

                             try:

                                 del published[device]

@@ -464,7 +466,7 @@
                     error_map.keys(),

                     5

                 )

-            except select.error, err:

+            except select.error as err:

                 if err[0] != EINTR:

                     raise

             # select_end = time.time()