服务器,等待客户端请求,并响应他们,然后等待更多请求,无限运行。
客户端,因特定的请求联系服务器,发送数据,等待响应,最后结束请求或者给出故障原因。
功能:为客户端的输入加上服务器的时间戳
- 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服务器代码tsTserv3.py
from socket import *
from time import ctime
HOST=''
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)
tcpSerSock=socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print('Waiting for connection……')
tcpCliSock,addr=tcpSerSock.accept()
print('……connection from:',addr)
while True:
data=tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send(('[%s] %s'%(ctime(),data.decode())).encode())
tcpCliSock.close()
tcpSerSock.close()
TCP客户端代码tsTclnt3.py
from socket import *
HOST='127.0.0.1' # or 'localhost'
PORT=21567
BUFSIZ=1024
ADDR=(HOST,PORT)
tcpCliSock=socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data=input('> ')
if not data:
break
tcpCliSock.send(data.encode())
data=tcpCliSock.recv(BUFSIZ)
if not data:
break
print(data.decode())
tcpCliSock.close()