首页 > 技术文章 > 关于OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。

accolade 2019-04-12 14:43 原文

在使用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给删除掉就好了。

推荐阅读