python中照片传输的socket编程

2024-06-30 11:49:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python中socket编程的新手。下面是一个在Mininet主机中打开TCP套接字并将照片从一个主机发送到另一个主机的示例。事实上,为了满足我的需求,我已经修改了用于向另一个主机(writing the received data to a text file)发送简单消息的代码。 但当我运行此代码时,在发送方遇到以下错误:

144
Traceback (most recent call last):
  File mmyClient2,pym, line 13, in <module> 
    if(s.sendall(data)):
  File m/usr/lib/python2.7/socket.pym, line 228, in meth
    return yetattr[self,_sockename](*args) 
  File m/usr/lib/python2.7/socket.pym, line 174, in _dummy 
    raise error(EBADF, 'Bad file descriptor') 
socket,error: [Errno 9] Bad file descriptor  

怎么了?你知道吗

你知道吗接收器.py你知道吗

import socket
import sys

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('10.0.0.1', 12345))

buf = 1024
f = open("2.jpg",'wb')

s.listen(1)
conn , addr = s.accept()
while 1:
    data = conn.recv(buf)
    print(data[:10])
    #print "PACKAGE RECEIVED..."
    f.write(data)   
    if not data: break
    #conn.send(data)
conn.close()
s.close()

你知道吗发件人.py地址:

import socket
import sys

f=open ("1.jpg", "rb")
print sys.getsizeof(f)
buf = 1024
data = f.read(buf)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.0.0.1',12345))

while (data):
    if(s.sendall(data)):
        #print "sending ..."
        data = f.read(buf)
        #print(f.tell(), data[:10])
s.close()

s.sendall()似乎有问题,因为当我将其更改为s.send()时,没有错误并且照片传输成功。所以我的问题是:虽然我在这个网站上的前一个问题中被建议使用s.sendall()而不是s.send(),但是不这样做是不对的吗?你知道吗


Tags: inimportsenddataifsyslinesocket
1条回答
网友
1楼 · 发布于 2024-06-30 11:49:47

发送完所有数据后,您就关闭了插座。和再次使用封闭的插座,这会导致错误。你呢我可以这样写发件人。你知道吗

import socket
import sys

f=open ("1.jpg", "rb")
print sys.getsizeof(f)
buf = 1024
data = f.read(buf)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('10.0.0.1',12345))

while 1:
    if not data:
        break
    s.sendall(data)
    data = f.read(buf)
s.close()

相关问题 更多 >