关于OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。

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

原文地址:https://www.cnblogs.com/accolade/p/10696003.html

时间: 2024-08-03 15:10:51

关于OSError: [WinError 10038] 在一个非套接字上尝试了一个操作。的相关文章

启动django应用报错 “Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。”

启动django应用时报如下错误 "Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试." 网上查了一下,是8000端口被其他程序占用了,杀掉占用的程序就可以 (1)查找哪个进程占用了8000端口 E:\sign_system\guest>netstat -ano|findstr 8000 (2)找出对应pid的进程详细信息 E:\sign_system\guest>tasklist |findstr 5516 (3)杀掉该进

Error is 10055 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

今天上午,一个同事反映:某系统的某个通过socket来进行通信的服务无法连接上数据库里,在操作系统上用数据库的客户端测试数据库连接也出现这样的错误信息:Error is 10055 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 经过检查,发现该程序是部署在一个前置机上,上边有一个通过SOCKET提供服务的程序,由于网络方面及程序设计本身存在一定缺陷,导致该程序需要通过一个小脚本来定时触发一次交易,以保障会话不会被超时断开.就这样,服务器上就会不断的有新的产生,由于程序或操作系统本身

apache(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试 ...

今天启动apache时,报了“(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试. : make_sock: could not bind to address 0.0.0.0:80”的错误.从网上查是是端口冲突,仔细检查发现80端口被IIS占用了. 解决方法:改端口号,打开.\apache\conf\httpd.conf,将其中的监听端口,由80改为81, # Change this to Listen on specific IP addresses as shown b

由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)

异常信息: System.Net.Sockets.SocketException (0x80004005): 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作. 192.168.0.187:22 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)   at System.Net.Sockets.Socket.Connect(EndPoint remot

no buffer space available、由于系统缓冲空间不足或队列已满,不能执行套接字上的操作

netstat -nat | find " " /c   查看连接数才2千多,怎么就报下面的错了 报以下错:(IE打开网站也打不开) no buffer space available(curl 报错). 由于系统缓冲空间不足或队列已满,不能执行套接字上的操作. 超出本地计算机网络适配器卡的名称限制 重启workstation服务.修改MaxUserPort值.修改TcpTimedWaitDelay值这些都不启作用 https://support.microsoft.com/zh-cn

未经处理的异常:System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试

报错:未经处理的异常:System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试 → 尝试以"管理员身份"运行程序,不行.→ 点击菜单下的"运行",输入"cmd",来到控制台.→ 输入"netstat -a"查看端口是否被占用,发现应用程序中所使用的端口已被占用.→ 更改应用程序的端口,问题解决.

.NET异常 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。

操作系统环境:Windows XP 异常描述:异常不定时.随机抛出.抛出异常的语句一般都是需要建立socket连接的语句. 原因:在XP系统下,默认最大的TCP端口号为5000,当超出该值时抛出如上异常. 解决方法: 1)启动注册表编辑器. 2)在注册表中,找到以下注册表子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 3)在编辑菜单上,单击新建,然后添加以下注册表项: 值名称: MaxUserPo

VMware报错:无法连接 MKS: 套接字连接尝试次数太多;正在放弃

环境: win10    VMware pro 14   Cent OS 7 问题详情: 报错:无法连接 MKS: 套接字连接尝试次数太多:正在放弃 解决方案: 1.关闭报错的虚拟机 2.打开控制面板->系统和安全->管理工具->服务 3.找到VMware Authorization Service,鼠标右键选择启动,然后就可以看到状态的改变 4.选中后鼠标右键属性中启动类型设置为自动.下次就会自启动 5.重新打开虚拟机,测试 原文地址:https://www.cnblogs.com/s

zabbix 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作

6612:20200219:091858.541 agent #3 started [listener #2] 14460:20200219:091858.541 agent #4 started [listener #3] 15468:20200219:091858.542 agent #5 started [active checks #1] 15468:20200219:091858.546 active check configuration update from [xx.xx.xx.