ファイルを送信し、単一のポートを使用してlocalhostでファイルを受信しようとしています。 私はこのエラーが発生し続ける9:すべてを試しましたが、ファイル記述子が不良です!ここでエラー9:Pythonで単一のファイルを転送中にファイル記述子が正しくありません
は、ファイルがコードを送っている。ここで
import socket # Import socket module
port = 60000 # Reserve a port for your service.
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
s.connect((host, port))
while True:
filename='mytext.txt'
f = open(filename,'rb')
l = f.read(1024)
while (l):
s.send(l)
print('Sent ',repr(l))
l = f.read(1024)
f.close()
print('Done sending')
s.close()
はファイルであるコードを受信:私が得る
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 60000 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
print 'Listening....'
with open('received_file', 'wb') as f:
print 'file opened'
while True:
conn, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
print('receiving data...')
data = conn.recv(1024)
print('data=%s', (data))
if not data:
break
# write data to a file
f.write(data)
f.close()
print('Successfully get the file')
print('connection closed')
エラー:
('Sent ', "'Hello world!!!!!'")
Done sending
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-1-ef0f47f9369f> in <module>()
22 l = f.read(1024)
23 while (l):
---> 24 s.send(l)
25 print('Sent ',repr(l))
26 l = f.read(1024)
C:\Users\Samir\Anaconda2\lib\socket.pyc in _dummy(*args)
172 __slots__ = []
173 def _dummy(*args):
--> 174 raise error(EBADF, 'Bad file descriptor')
175 # All _delegate_methods must also be initialized here.
176 send = recv = recv_into = sendto = recvfrom = recvfrom_into =
_dummy
error: [Errno 9] Bad file descriptor
すべてのヘルプは歓迎です!
ありがとうございます!私は何時間もこれを解決できませんでした!しかし、whileループを削除しないと、もはや接続待ちの状態になりませんか? – SamT01
あなたもあなたのサーバーを修正することを確認してください! – Grimmy
@ SamT01外部ループは、サーバーではなくクライアントで削除されました – Grimmy