python - 运行客户端\服务器python时套接字断开连接
问题描述
我有一个客户端-服务器程序从服务器发送到客户端
服务器位于与客户端不同的文件夹中(例如服务器代码有一个文件夹,客户端代码有另一个文件夹)
- 运行服务器和客户端时,服务器给我一个错误,即套接字断开连接,我不知道为什么: Traceback(最近一次调用最后一次):文件“server.py”,第 30 行,在 s.send(ans .encode(FORMAT)) OSError: [WinError 10057] 不允许发送或接收数据的请求,因为套接字未连接并且(使用 sendto 调用在数据报套接字上发送时)没有提供地址
服务器代码:
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()
解决方案
推荐阅读
- reactjs - api调用后是否可以立即获得价值?
- sql - 在 SQL Server 中使用 SUM 函数时如何显示空值
- css - 编译 Sass 时出错:$spacers Bootstrap 处的 ModuleBuildError
- vue.js - Vuetify:如何在输入中出现 v-text-field 标签
- javascript - 发送发送时UseEffect不更新反应网站数据
- wordpress - 如何使特定页面显示小部件区域
- java - 如何比较 2 个对象的年龄值?
- git - 第三方项目不在 GIT 中 - 新版本 - 保留我的更改
- maven - 尝试使用 Maven 构建将 CIF 连接器安装到 AEM
- javascript - 执行相关异步任务时的流程应该是什么?