[WinError 10038] 在一个非套接字上尝试了一个操作

[WinError 10038] 在一个非套接字上尝试了一个操作

socket先close再调recv就会报错。

解决方法:可以判断一下是否关闭了再操作:

if not tcpCliSock._closed:

 

# !/usr/bin.env python
# -*- coding: cp936 -*-
from socket import *
from time import ctime


def serverSocket():
    HOST = 'localhost'  # 主机地址
    PORT = 21567  # 服务器接收端口
    BUFSIZ = 1024  # 接收套接字的缓冲区大小
    ADDR = (HOST, PORT)  # 仅仅是将二者合起来,作为连接到的服务器地址类型

    tcpSerSock = socket(AF_INET, SOCK_STREAM)  # udpSerSock = socket(AF_INET , SOCK_DGRAM)
    tcpSerSock.bind(ADDR)
    tcpSerSock.listen(5)

    while True:
        print('waiting for connection...')
        tcpCliSock, address = tcpSerSock.accept()

        print('connected from :', address)

        while True:
            recvData = tcpCliSock.recv(BUFSIZ)
            if not recvData:
                print('no found data')
                break
            tcpCliSock.send(('[%s] %s' % (ctime(), recvData)).encode('utf-8'))
            tcpCliSock.close()
    tcpSerSock.close()


def main():
    serverSocket()


if __name__ == '__main__':
    main()
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误表示在一个套接字尝试一个操作套接字是一种网络通信协议,用于在计算机之间传输数据。如果你在一个套接字尝试执行套接字操作,就会出现这个错误。可能的原因包括使用了错误的套接字类型或尝试在不支持套接字的设备上执行操作。要解决这个问题,你需要检查你的代码,确保你正在使用正确的套接字类型,并确保你的设备支持套接字操作。 ### 回答2: WinError 10038是指在一个套接字尝试进行套接字操作的错误。套接字是计算机网络通信中的一种通用的数据传输标准,是实现网络通信的重要组成部分。套接字操作包括连接、发送和接收数据等,只能在套接字上进行。 如果尝试套接字上进行套接字操作,则会出现WinError 10038错误。这通常是由以下原因引起的: 1.套接字对象。套接字对象可以是任何套接字句柄,如文件、目录或管道等。当试图在这些对象上使用套接字操作时,系统就会发出WinError 10038错误。 2.未正确初始化套接字。在进行套接字操作之前,必须初始化套接字以确保它们处于正确的状态。如果没有做到这一点,就会导致WinError 10038错误。 3.应用程序错误。有些应用程序会无意中试图在套接字上进行套接字操作,这可能是由于编程错误或其他原因造成的。 为了解决这个问题,我们应该避免在套接字上使用套接字操作。我们应该确保只在正确的套接字上使用套接字操作,并在进行套接字操作之前初始化套接字以确保它们处于正确的状态。在编写应用程序时,我们应该注意避免编写可能引起WinError 10038的代码。 ### 回答3: WinError 10038Windows操作系统中一个常见的错误代码,指的是在一个套接字尝试进行操作的错误。套接字是网络编程中广泛使用的一种通信机制,它提供了不同计算机之间的数据传输和通信能力。 在网络编程中,套接字通常是通过调用操作系统提供的套接字API函数来创建和使用的。然而,当程序尝试一个套接字上使用套接字API函数的时候,就会出现WinError 10038错误。 造成该错误的原因可能有很多种。可能是因为程序中的某些对象无法转换为套接字类型,也可能是因为程序在使用套接字API函数之前没有正确地初始化或设置套接字参数。 要解决WinError 10038错误,需要综合考虑程序中可能存在的问题因素,并进行一些常见的排查和调试操作,比如: 1. 检查程序中创建套接字的方式是否正确,套接字的类型和其他参数是否设置正确; 2. 检查程序中使用套接字API函数的方式是否正确,函数参数是否传递正确; 3. 检查程序中其他相关对象或模块是否与套接字相关,是否存在数据传输上的冲突或竞争; 4. 打开调试模式,逐步定位和排查错误,并进行必要的日志记录和跟踪。 需要注意的是,WinError 10038并不是一个单一的错误,其具体表现和原因可能因程序和环境不同而有所不同。因此,在进行开发和调试时,需要仔细分析具体错误情况,并结合具体业务场景,制定相应的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值