diff --git a/pcl_expect/tcp.py b/pcl_expect/tcp.py
new file mode 100644
index 0000000000000000000000000000000000000000..91cbbf3a5cbf14e337201edbfedb576cc95f64e0
--- /dev/null
+++ b/pcl_expect/tcp.py
@@ -0,0 +1,32 @@
+import socket
+
+import pcl_expect
+
+__all__ = [
+    "Tcp",
+    ]
+
+class Tcp(pcl_expect.Expectable):
+
+    """Connect to a TCP port."""
+
+    def __init__(self, sockaddr):
+        """Connect a TCP socket to the address given by sockaddr.
+
+           sockaddr is passed to the connect() method of a socket
+           object.  It should normally be a pair of a host name and
+           port number.
+
+        """
+
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+        self.sock.connect(sockaddr)
+        pcl_expect.Expectable.__init__(self, self.sock.fileno())
+
+    def send(self, s):
+        self.sock.send(s)
+
+    def close(self):
+        pcl_expect.Expectable.close(self)
+        self.sock.close()