运行客户端\服务器python时,套接字断开连接

运行客户端\服务器python时,套接字断开连接,python,sockets,visual-studio-code,tcp,txt,Python,Sockets,Visual Studio Code,Tcp,Txt,我有一个客户端-服务器程序要从服务器发送到客户端 服务器位于与客户端不同的文件夹中(例如,有一个用于服务器代码的文件夹和另一个用于客户端代码的文件夹) -在运行服务器和客户端时,服务器会给我一个错误,导致套接字断开,我不知道原因: 回溯(最近一次呼叫最后一次): 文件“server.py”,第30行,在 s、 发送(ans.encode(格式)) OSError:[WinError 10057]不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未找到

我有一个客户端-服务器程序要从服务器发送到客户端

服务器位于与客户端不同的文件夹中(例如,有一个用于服务器代码的文件夹和另一个用于客户端代码的文件夹)

-在运行服务器和客户端时,服务器会给我一个错误,导致套接字断开,我不知道原因: 回溯(最近一次呼叫最后一次): 文件“server.py”,第30行,在 s、 发送(ans.encode(格式)) OSError:[WinError 10057]不允许发送或接收数据的请求,因为套接字未连接,并且(使用sendto调用在数据报套接字上发送时)未找到任何地址 增加

服务器代码: 客户端代码:
VS code无法在file->newwindow中打开两个终端
您也可以在系统中使用comand(shell),如果您想调试,可以使用pycharmif告诉您如何在pycharm中打开两个终端,因为我不熟悉它。您可以只打开两个cmd窗口,而不使用嵌入式终端,然后在那里运行它们
import socket
import os
import json

SIZE = 1024
FORMAT = "utf-8"

# creating a TCP socket
print('\n','_'*50,"\n\nThe server started.. ")

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("127.0.0.1", 5100))

# converted into passive socket - queue up to 2 requests
print("\n\nThe server is listening.. ")
s.listen(5)


while True:
    cli, sockname = s.accept()
    print('Accepted request from', sockname[0], 'with port number', sockname[1])

    listoffile= [x for x in os.listdir() if x.endswith(".txt")]
    ans =json.dumps(listoffile)
    thelist=ans.replace(',','\n').replace('[',"").replace('"',"").replace(']',"")+"\n exit"

    print('\n The server will send the list to the client:\n',thelist)
    s.sendall(ans.encode(FORMAT))
    rec = cli.recv(SIZE).encode(FORMAT)
    if rec != 'exit':
        with open(rec,'rb') as f:
            filetosend =f.read(SIZE)
            s.sendall(filetosend.encode(FORMAT))
    elif rec == 'exit':
        cli.close()
        s.close()

import socket
host = '127.0.0.1'
port = 5100
SIZE = 1024
FORMAT = "utf-8"

# creating a TCP socket
print('\n','_'*50,"\n\nThe client side started.. ")

c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
c.connect((host, port))

while True:
        
    msg = c.recv(SIZE).decode(FORMAT)
    msg=msg.replace(',','\n').replace('[',"").replace('"',"").replace(']',"")+"\n exit"
    print(f"Choose one of the file to get a copy: {msg}")
    filename = input("Enter the file name or exit to quit:")
    if filename != 'exit':
        c.send(filename.encode(FORMAT))
        f=open(filename,'wb')
        data=c.recv(SIZE)
        f.write(data)
        print('The file {filename} is copied.')
    elif filename == 'exit':
        c.close()