首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OSError:[Errno 9]错误的文件描述符

OSError:[Errno 9]错误的文件描述符
EN

Stack Overflow用户
提问于 2020-02-05 00:56:58
回答 1查看 2.7K关注 0票数 1

我最初尝试使用python运行,但出现了不同的错误,所以我尝试使用python3,并在标题中收到错误。我正在尝试连接到服务器并下载一个实现了tls的文件。

代码语言:javascript
复制
import socket, ssl, pprint
import os, time
import threading

def main():
    s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    ssl_sock = ssl.wrap_socket(s2,
                           server_side = False,
                           ca_certs="CA.crt",
                           cert_reqs=ssl.CERT_REQUIRED)
    s2.connect(('localhost',10024))
    filename = raw_input("What file do you wish to download? -> ")

    if filename != 'q':
        s2.send(filename)

        data = s2.recv(1024)
        if data [:7] == 'fEXISTS':
            fSize = long(data[7:])

            message = raw_input("The file you wish to download is " +str(fSize)+\
                        "bytes, would you like to proceed? (y/n): ")

            if message == 'y':
                s2.send ('OK')
                f = open('new_'+filename, 'wb')
                data = s2.recv(2000000)
                totalRecv = len(data)
                f.write(data)

                while totalRecv < fSize:
                    data = s2.recv(2000000)
                    totalRecv += len(data)
                    f.write(data)
                    progress = ((totalRecv/float(fSize))*100)
                    print ("{0: .2F}".format(progress)+\
                            "% Completed")
        else:
            print ("ERROR: File does not exist!")
    s2.close()

if __name__ == '__main__':
    main()
EN

回答 1

Stack Overflow用户

发布于 2020-02-05 02:45:20

在socket (使用ssl.wrap_socket)中包装套接字之后,您不应该再使用原始套接字。

您应该在ssl_sock上调用connectsendrecv等,而不是在s2上。

(具体地说,当您调用ssl.wrap_socket时,将在原始套接字上调用.detach方法,该方法将从原始套接字中删除文件描述符。将文件描述符传送给SSL套接字实例。你能做的唯一的事情就是关闭/销毁它。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60062124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档