Python客户端与服务器连接代码无输出致浏览器繁忙,求排查原因
为什么你的Python客户端与服务器代码无输出还导致浏览器繁忙?
我来帮你拆解下问题所在,其实是两个小细节搞砸了整个流程:
1. 服务器发送数据时的类型错误(核心问题)
在Python 3里,socket的send()方法只能发送字节对象,但你的服务器代码里直接传了字符串:
c.send('Thank you for connecting') # 错误:字符串不能直接发送
这会导致服务器运行时抛出TypeError: a bytes-like object is required, not 'str'的错误,服务器没法正常给客户端发送数据。而客户端这边的s.recv(1024)会一直处于阻塞状态,等待服务器的数据,这就会让程序卡住——如果你是在浏览器里的在线Python环境运行,浏览器自然就会显示繁忙,而且客户端也收不到任何输出。
解决方法是把字符串编码成字节,比如:
c.send(b'Thank you for connecting') # 用b前缀直接定义字节串 # 或者 c.send('Thank you for connecting'.encode('utf-8')) # 显式编码为UTF-8字节
2. 客户端没有正确关闭套接字
你的客户端最后一行是s.close,这只是引用了close方法,并没有真正调用它。正确的写法应该是加括号调用:
s.close()
虽然这个问题不会直接导致无输出,但会造成套接字资源没有正常释放,长期运行可能会有资源泄漏的问题。
额外小提醒
如果是在本地运行,一定要先启动服务器,再启动客户端——如果先启动客户端,客户端会因为连不上服务器直接报错,这点也要留意哦。
内容的提问来源于stack exchange,提问作者Abdul Basit
相关产品推荐
相关产品推荐

