diff --git a/examples/proxy.py b/examples/proxy.py
index 3be26f9..946942e 100644
--- a/examples/proxy.py
+++ b/examples/proxy.py
@@ -8,6 +8,8 @@
 #
 # $Id: proxy.py,v 1.2 2004/07/22 12:01:25 martin Exp $
 
+from __future__ import print_function
+
 import sys
 import socket
 import string
@@ -16,9 +18,9 @@
 
 
 def usage(exit_code=0):
-    print "Usage: %s server[:port] proxy[:port]" % sys.argv[0]
-    print "  Connects SSL to the specified server (port 443 by default)"
-    print "    using the specified proxy (port 8080 by default)"
+    print("Usage: %s server[:port] proxy[:port]" % sys.argv[0])
+    print("  Connects SSL to the specified server (port 443 by default)")
+    print("    using the specified proxy (port 8080 by default)")
     sys.exit(exit_code)
 
 
@@ -44,13 +46,13 @@
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     try:
         s.connect(proxy)
-    except socket.error, e:
-        print "Unable to connect to %s:%s %s" % (proxy[0], proxy[1], str(e))
+    except socket.error as e:
+        print("Unable to connect to %s:%s %s" % (proxy[0], proxy[1], str(e)))
         sys.exit(-1)
 
     # Use the CONNECT method to get a connection to the actual server
     s.send("CONNECT %s:%s HTTP/1.0\n\n" % (server[0], server[1]))
-    print "Proxy response: %s" % string.strip(s.recv(1024))
+    print("Proxy response: %s" % string.strip(s.recv(1024)))
 
     ctx = SSL.Context(SSL.SSLv23_METHOD)
     conn = SSL.Connection(ctx, s)
@@ -61,8 +63,8 @@
     # start using HTTP
 
     conn.send("HEAD / HTTP/1.0\n\n")
-    print "Sever response:"
-    print "-" * 40
+    print("Sever response:")
+    print("-" * 40)
     while 1:
         try:
             buff = conn.recv(4096)
@@ -70,7 +72,7 @@
             # we're done
             break
 
-        print buff,
+        print(buff, end="")
 
 
 if __name__ == '__main__':
diff --git a/examples/sni/client.py b/examples/sni/client.py
index 428525b..d4a751f 100644
--- a/examples/sni/client.py
+++ b/examples/sni/client.py
@@ -1,6 +1,8 @@
 # Copyright (C) Jean-Paul Calderone
 # See LICENSE for details.
 
+from __future__ import print_function
+
 from sys import argv, stdout
 from socket import socket
 
@@ -13,21 +15,21 @@
     by argv[1], of it.
     """
     if len(argv) < 2:
-        print 'Usage: %s <hostname>' % (argv[0],)
+        print('Usage: %s <hostname>' % (argv[0],))
         return 1
 
     client = socket()
 
-    print 'Connecting...',
+    print('Connecting...', end="")
     stdout.flush()
     client.connect(('127.0.0.1', 8443))
-    print 'connected', client.getpeername()
+    print('connected', client.getpeername())
 
     client_ssl = Connection(Context(TLSv1_METHOD), client)
     client_ssl.set_connect_state()
     client_ssl.set_tlsext_host_name(argv[1])
     client_ssl.do_handshake()
-    print 'Server subject is', client_ssl.get_peer_certificate().get_subject()
+    print('Server subject is', client_ssl.get_peer_certificate().get_subject())
     client_ssl.close()
 
 
diff --git a/examples/sni/server.py b/examples/sni/server.py
index e0c159a..891c6c5 100644
--- a/examples/sni/server.py
+++ b/examples/sni/server.py
@@ -1,6 +1,8 @@
 # Copyright (C) Jean-Paul Calderone
 # See LICENSE for details.
 
+from __future__ import print_function
+
 from sys import stdout
 from socket import SOL_SOCKET, SO_REUSEADDR, socket
 
@@ -29,10 +31,10 @@
     port.bind(('', 8443))
     port.listen(3)
 
-    print 'Accepting...',
+    print('Accepting...', end="")
     stdout.flush()
     server, addr = port.accept()
-    print 'accepted', addr
+    print('accepted', addr)
 
     server_context = Context(TLSv1_METHOD)
     server_context.set_tlsext_servername_callback(pick_certificate)
