Python socket ssl 的server端和client端程序
来源:互联网 发布:常见算法的时间复杂度 编辑:程序博客网 时间:2024/05/16 15:23
首先用生成证书和key:
openssl req -new -x509 -days 365 -nodes -out certSrv.pem -keyout keySrv.pem
/////////////////////////////////////////////////////////////////////////////////////////////
SERVER SIDE code socketS.py :
import socket, ssl, time
#context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
context.load_cert_chain(certfile = "certSrv.pem", keyfile = "keySrv.pem")
bindsocket = socket.socket()
print( "socket create success! ")
bindsocket.bind(('', 10032))
print( "socket bind success! ")
bindsocket.listen(5)
print( "socket listen success! ")
def do_something(connstream, data):
print( "data length: ", len(data))
return True
def deal_with_client(connstream):
t_recv = 0
t_send = 0
n = 0
t1 = time.clock()
data = connstream.recv(1024)
t2 = time.clock()
t = t2 - t1
print("receive time: ", t)
while data:
if not do_something(connstream, data):
break
n = n + 1
t1 = time.clock()
connstream.send(b'b'*1024)
t2 = time.clock()
t_send += t2-t1
print( "send time: ", t2-t1)
t1 = time.clock()
data = connstream.recv(1024)
t2 = time.clock()
t_recv += t2-t1
print( "receive time: ", t2-t1)
print( "avg send time: ", t_send/n, "avg receive time: ", t_recv/n)
while True:
newsocket, fromaddr = bindsocket.accept()
print ( "socket accept one client!")
connstream = context.wrap_socket( newsocket, server_side = True)
try:
deal_with_client(connstream)
finally:
connstream.shutdown(socket.SHUT_RDWR)
connstream.close()
//////////////////////////////////////////////////////////////////////////////////////////////
CLIENT SIDE code socketC.py :
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print( "socket create success! ")
ssl_sock = ssl.wrap_socket(s, ca_certs="certSrv.pem", cert_reqs=ssl.CERT_REQUIRED)
ssl_sock.connect(('', 10032))
print("socket connets success! ")
pprint.pprint(ssl_sock.getpeercert())
n = 0
t_send = 0
t_recv = 0
while n<10:
n = n+1
t1 = time.clock()
ssl_sock.send(b'a'*100)
t2 = time.clock()
t_send += t2-t1
print( "send time: ", t2-t1)
t1 = time.clock()
data = ssl_sock.recv(1024)
t2 = time.clock()
t_recv += t2-t1
print( "receive time: ", t2-t1)
print( "avg send time: ", t_send/n, "avg receive time: ", t_recv/n)
ssl_sock.close()
//////////////////////////////////////////////////////////////////////////////////////////////
RESULT(client):
wsm@ubuntu:~/bin$ python socketC.py
socket create success!
socket connets success!
{'issuer': ((('countryName', u'AU'),),
(('stateOrProvinceName', u'Some-State'),),
(('organizationName', u'Internet Widgits Pty Ltd'),)),
'notAfter': 'Nov 10 04:03:59 2016 GMT',
'notBefore': u'Nov 11 04:03:59 2015 GMT',
'serialNumber': u'F7B84366312864F7',
'subject': ((('countryName', u'AU'),),
(('stateOrProvinceName', u'Some-State'),),
(('organizationName', u'Internet Widgits Pty Ltd'),)),
'version': 1L}
('send time: ', 4.999999999999796e-05)
('receive time: ', 7.299999999999668e-05)
('send time: ', 3.299999999999831e-05)
('receive time: ', 3.199999999999731e-05)
('send time: ', 2.5999999999998247e-05)
('receive time: ', 5.000000000000143e-05)
('send time: ', 3.399999999999931e-05)
('receive time: ', 3.799999999999637e-05)
('send time: ', 2.1000000000000185e-05)
('receive time: ', 2.3000000000002185e-05)
('send time: ', 1.7000000000003124e-05)
('receive time: ', 2.4000000000003185e-05)
('send time: ', 1.8999999999998185e-05)
('receive time: ', 2.9000000000001247e-05)
('send time: ', 2.0999999999993246e-05)
('receive time: ', 2.3000000000002185e-05)
('send time: ', 1.7000000000003124e-05)
('receive time: ', 2.3000000000002185e-05)
('send time: ', 1.7000000000003124e-05)
('receive time: ', 2.1000000000000185e-05)
('avg send time: ', 2.549999999999948e-05, 'avg receive time: ', 3.3600000000000295e-05)
//////////////////////////////////////////////////////////////////////////////////////////////
RESULT(server):
wsm@ubuntu:~/bin$ python ./socketS.py
socket create success!
socket bind success!
socket listen success!
socket accept one client!
('receive time: ', 6.0999999999998555e-05)
('data length: ', 100)
('send time: ', 6.599999999999662e-05)
('receive time: ', 2.7000000000006186e-05)
('data length: ', 100)
('send time: ', 2.5999999999998247e-05)
('receive time: ', 3.200000000000425e-05)
('data length: ', 100)
('send time: ', 4.300000000000137e-05)
('receive time: ', 2.8000000000000247e-05)
('data length: ', 100)
('send time: ', 3.399999999999931e-05)
('receive time: ', 1.5000000000001124e-05)
('data length: ', 100)
('send time: ', 2.0000000000006124e-05)
('receive time: ', 1.2999999999999123e-05)
('data length: ', 100)
('send time: ', 2.2000000000001185e-05)
('receive time: ', 1.2999999999999123e-05)
('data length: ', 100)
('send time: ', 3.899999999999737e-05)
('receive time: ', 1.5000000000001124e-05)
('data length: ', 100)
('send time: ', 1.8999999999998185e-05)
('receive time: ', 1.2999999999999123e-05)
('data length: ', 100)
('send time: ', 2.3999999999996247e-05)
('receive time: ', 1.3000000000006062e-05)
('data length: ', 100)
('send time: ', 1.7999999999997185e-05)
('receive time: ', 0.00017400000000000054)
('avg send time: ', 3.1099999999999184e-05, 'avg receive time: ', 3.430000000000169e-05)
50,1-8 Bot
- Python socket ssl 的server端和client端程序
- python socket-server-client
- Socket的Server-Client模型的程序
- Java Socket 简单的Client/Server程序
- Java Socket 简单的Client/Server程序
- Java Socket 简单的Client/Server程序
- client/server程序-python
- udp socket,Client端程序
- Windows Socket Client端程序
- 【Socket编程】使用C++实现Server端和Client端
- socket通信实现server端和client端互发消息
- python中实现一个socket和server的程序
- Linux下的socket协议UDP Client/Server程序
- 【Little_things】简单的Client/Server通信小程序(java socket)
- 一个简单的server和client程序
- socket服务端和client端
- 实现Server和client端的通信
- python socket server端
- java 区别“==”和equals()方法
- android studio R文件提示报错(可能是xml文件语法错误)
- 如何完成循环小数转成分数?
- NC渗透测试
- ORA-01795: 列表中的最大表达式数为1000的解决方法详解
- Python socket ssl 的server端和client端程序
- IE6兼容性问题及解决办法汇总
- 解决EditText多行编辑时在ScrollView中无法滚动的问题
- POJ 3259 Wormholes
- ios RSA加解密
- 搭建springMVC报错
- 透视变换畸变校正 双线性
- delete 和 delete []的真正区别
- mac安装protobuf