基本tcp长连接通信,代码如下,server端代码:
# server
import socket
s = socket.socket(socket.AF_INET)
s.bind(('0.0.0.0', 8080))
s.listen(4) #可等待被accept的连接个数
con, addr = s.accept()
con.recv(1024)
client端代码:
# client
import socket
s = socket.socket(socket.AF_INET)
s.connect(('xx.xx.xx.xx', 8080))
s.send('haha')
ssl库提供了很好的封闭,隐藏了加密细节,上层使用无感知,获取一个地址的公开密钥证书如下:
import ssl
ssl.get_server_certificate(('www.hustyx.com', 443), ssl.PROTOCOL_SSLv23)
加密通信server端代码如下:
# server
import ssl, socket
s = socket.socket(socket.AF_INET)
s.bind(('0.0.0.0', 8080))
s.listen(4)
con, addr = s.accept()
sslcon = ssl.wrap_socket(con, keyfile='/tmp/xxx.key', certfile='/tmp/xxx.pem', server_side=True, ssl_version=ssl.PROTOCOL_SSLv23)
sslcon.send('haha')
加密通信client端代码如下:
# client
import ssl, socket
s = socket.socket(socket.AF_INET)
sslcon = ssl.wrap_socket(s, ca_certs='/tmp/xxx.pem', ssl_version=ssl.PROTOCOL_SSLv23)
sslcon.connect(('xx.xx.xx.xx', 8080))
sslcon.recv()