您的位置:首页 > 理论基础 > 计算机网络

Python的tcp传输: server和client基础代码解析

2020-01-14 11:11 267 查看

周六,细细的品一段代码,嗯,比品美酒爽,哈哈

tcp客户端基础代码:

"""
socket() > connect > send/recv
"""
from socket import *

sockfd = socket(AF_INET, SOCK_STREAM)	# 默认值其实就是这个, tcp套接字
try:
sockfd.connect(('127.0.0.1', 8888))
print('连接上了服务器')			# 连接上,就显示一下, 告知操作人员
except Exception as e:
print('连接失败',e)		# 处理一下连接失败

while True:
msg = input("msg>>")
if not msg:						# 输入为空就退出
print('客户端退出')
sockfd.close()		# 退出后随即关闭套接字
break
sockfd.send(msg.encode())	# 其实相当于if的else

data = sockfd.recv(128)
print(data.decode())				# 打印服务器发回来的消息

tcp服务端代码:

"""
socket() > bind > listen > accept() > recv/send
"""
from socket import *

sockfd = socket(AF_INET, SOCK_STREAM)
sockfd.bind(('0.0.0.0', 8888))
sockfd.listen(3)

while True:
print('等待接收中...')			# 不会发生异常的语句就不要放在try里了
try:
connfd, addr = sockfd.accept()
print('客户端已连接:', addr)			# 连接到客户端,就打印消息,告诉一下操作人员
except KeyboardInterrupt:
print('服务器退出')
break														# 每次捕获异常, 都要做相应的处理, 不然后续代码会出问题
except Exception as e:
print(e)
continue													# 每次捕获异常, 都要做相应的处理, 不然后续代码会出问题

while True:
data = connfd.recv(1024)					# 循环接收数据
if not data:												# 客户端退出后,系统会自动发送空字符过来,可以据此判断客户端状态
print('此客户端已退出, 正在等待连接下一个客户端...\n')
connfd.close()									# 关闭对应这个客户的套接字
break													# 退出这个客户的"循环接收发送"
print('客户端发来:', data.decode())	# 客户端发来的消息不为空时的处理
connfd.send(b"OK")							# 会发客户端消息
sockfd.close()
  • 点赞
  • 收藏
  • 分享
  • 文章举报
liu*star 发布了94 篇原创文章 · 获赞 2 · 访问量 490 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: