在使用socket的时候,写了一个while循环,就报错了。结果如下:
OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。
代码
import socket import time sk=socket.socket() ip_port=('192.168.43.155',8899) sk.bind(ip_port) sk.listen() while 1: time.sleep(1) conn,addr=sk.accept() info=conn.recv(8090).decode("utf-8") print(info) conn.send(b'http/1.1 200 OK\r\ncontent-type:text/html; charset=utf-8\r\n\r\n') conn.send(b'hello world') conn.close() sk.close()
原因:每次循环的时候我把socket的客户端给关闭了,所以无法accept就只造成了这样的报错.只怪自己太大意了。
解决方法是把最后面的sk,close给删除掉就好了。
本文探讨了在使用Python的socket模块进行网络编程时遇到的一个常见错误:在非套接字上尝试操作导致的OSError。通过分析代码,发现错误源于在循环中反复关闭客户端连接,从而无法再次接受连接请求。文章提供了修正方案,即移除不必要的socket关闭语句,确保服务端能够持续监听并接收新的客户端连接。

3万+


被折叠的 条评论
为什么被折叠?



