本文记录针对python网络编程学习过程中的socket部分进行记录与总结,TCP服务器和客户端的创建(socket/socketserver)
from socket import *
from time import ctime
HOST = '' # 允许任意host接入
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR) # 绑定地址
tcpSerSock.listen(5) # 最多同时监听数量上限为5
while True:
print('waiting for connection...')
# 接受客户端请求之前保持阻塞,连接后获取客户端socket及其地址
tcpCliSock, addr = tcpSerSock.accept()
# 打印请求此次服务的客户端的地址
print('...connection from: {}'.format(addr))
while True:
# 通过客户socket获取客户端信息(bytes类型),并解码为字符串类型
data = tcpCliSock.recv(BUFSIZ).decode('utf8')
if not data:
break
# 处理字符串并重新编码为bytes类型,调用send()方法发送回客户端
tcpCliSock.send('[{}] {}'.format(ctime(), data).encode('utf8'))
# 关闭客户端
tcpCliSock.close()
# 关闭服务器
tcpCliSock.close()
from socket import *
HOST = 'localhost' # 指定客户端访问host
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR) # 连接地址
while True:
# 用户输入数据(str类型)
data = input('> ')
if not data:
break
# 将数据进行编码,再通过send()方法发送给之前绑定的地址服务器
tcpCliSock.send(data.encode('utf8'))
# 接收服务器返回的数据(bytes类型),解码为字符串类型
data = tcpCliSock.recv(BUFSIZ).decode('utf8')
if not data:
break
# 打印字符串
print(data)
# 关闭客户端,断开连接
tcpCliSock.close()
参考https://blog.csdn.net/weixin_41179606/article/details/81069729