socket
网络编程,参考python核心编程2-4
tcp服务器模板: ss = socket() #创建服务器套接字 ss.bind() #套接字与地址绑定 ss.listen() #监听连接 inf_loop: #服务器无限循环 cs = ss.accept() #接受客户端连接 comm_loop: #通信循环 cs.recv()/cs.send() #对话(接受/发送) cs.close() #关闭客户端套接字 ss.close() #关闭服务器套接字
tcp客户端模板: cs = socket() #创建客户端套接字 cs.connect() #尝试连接服务器 comm_loop: #通信循环 cs.send()/cs.recv() #对话(发送/接收) cs.close() #关闭客户端
以时间戳服务器举例
tcp时间戳服务器:
1 from socket import * 2 import time 3 4 HOST = '' #HOST变量为空白表示它可以使用任何地址 5 PORT = 12181 #随机端口 6 BUFSIZ = 1024 #缓冲区大小 7 ADDR = (HOST,PORT) #地址 8 9 tcp_Service = socket(AF_INET,SOCK_STREAM,0) #分配tcp服务器套接字 10 tcp_Service.bind(ADDR) #将套接字绑定到服务器上 11 tcp_Service.listen(5) #开启tcp监听器 12 13 while True: #无限循环 14 print('正在运行。。。') 15 tcpClisock, add = tcp_Service.accept() #接收数据 16 print('连接来自:',add) 17 while True: #无限循环 18 data = tcpClisock.recv(BUFSIZ) 19 if not data: #如果数据为空则断开连接 20 break 21 # tcpClisock.send('[%s] %s' %(bytes(time.ctime,'utf-8'),data) #原档格式化转码有错误 22 tcpClisock.send(('[%s] %s' %(time.ctime(),data)).encode()) #格式化数据并返回客户端 23 tcpClisock.close() #更加优雅的退出方式
tcp时间戳客户端:
1 from socket import * 2 3 4 HOST = 'localhost' #HOST为服务器地址,因为用的是本机测试所以地址为localhost 5 PORT = 12181 #为服务器开放端口 6 BUFSIZ = 1024 #缓冲区大小 7 ADDR = (HOST, PORT) #组合地址 8 9 tcpClisock = socket(AF_INET,SOCK_STREAM) #创建套接字 10 tcpClisock.connect(ADDR) #尝试连接服务器 11 12 while True: #通信循环 13 data = input('> ') # 14 if not data: #用户没有输入则终止连接 15 break 16 tcpClisock.send(data.encode()) #数据格式化发送服务器 17 data = tcpClisock.recv(BUFSIZ) 18 if not data: #服务器无传回数据则终止连接 19 break 20 print(data.decode('utf-8')) #格式化打印传回数据 21 tcpClisock.close() #优雅的结束客户端套接字
单词:
required 必须的
recv 接收
send 发送