- The bind() method attaches a socket(Remember, the SSLSocket is derived from the socket class) to an available IP address and a port.
- The client programs generally do not invoke the bind() method on a socket instance. The reason is the socket will be attached to an ephemeral port when the bind() method is not called.
- The clients, contact server programs all the times. Hence, a server socket should be attached to a specific IP address and a port number.
- The Python program below when executed binds an SSLSocket to a specific port and IP.
- The client program provided in the Introduction to SSLSocket, can be used to connect to this server.
- The server responds by sending a the temperature of a city to the client.
# An example Python program that binds to an IP address and port
# using the bind() method of SSLSocket class
# and listens for incoming connections from clients. To the
# clients, it responds with the current temperature of a city.
# The temperature values are simply random values between average high and
# low values.
# File paths
pemFileName = "./DemoCA.pem";
certFileName = "./DemoSvr.crt";
keyFileName = "./DemoSvr.key";
# IP address and Port number
ipAddress = "127.0.0.1";
portNumber = 15001;
# Socket creation
sock = socket.socket();
# SSL context creation
ct = ssl.SSLContext();
ct.verify_mode = ssl.CERT_REQUIRED;
# Load the certificate of the certificate authority, with which the
# server will validate the client certificate
# Load the server certificate
# Create server socket
serverSocket = socket.socket();
# Make an SSLSocket
secureServerSocket = ct.wrap_socket(serverSocket,
# Bind the secure socket to a specific IP address and port number
# Listen to accept connections
print("Temperature server listening for client requests:");
(clientConnection, clientIP) = secureServerSocket.accept();
temp = random.uniform(50, 65);
tempStr = "Temperature in the city is %2.2f"%temp;
encoded = tempStr.encode();
print("Replied to %s with the temperature value %2.2f"%(clientIP, temp));
Replied to ('127.0.0.1', 51589) with the temperature value 60.22
Replied to ('127.0.0.1', 51592) with the temperature value 53.73
Secure communication received from server:Temperature in the city is 53.73