首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于传输照片的python套接字编程

用于传输照片的python套接字编程
EN

Stack Overflow用户
提问于 2018-07-11 06:11:19
回答 1查看 580关注 0票数 0

我对python中的套接字编程是个新手。下面是在Mininet主机中打开TCP套接字并将照片从一台主机发送到另一台主机的示例。实际上,我更改了用于向另一个主机(writing the received data to a text file)发送简单消息的代码,以满足我的需求。虽然当我实现这个修改后的代码时,没有错误,而且它似乎可以正确地传输,但我不确定这是否是完成这种传输的正确方式。由于我在同一台机器上运行两台主机,我认为这可能会对结果产生影响。我想请您检查一下这是否是正确的传输方式,或者我是否应该添加或删除某些内容。

mininetSocketTest.py #!/usr/bin/python

代码语言:javascript
复制
from mininet.topo import Topo, SingleSwitchTopo
from mininet.net import Mininet
from mininet.log import lg, info
from mininet.cli import CLI

def main():
    lg.setLogLevel('info')

    net = Mininet(SingleSwitchTopo(k=2))
    net.start()

    h1 = net.get('h1')
    p1 = h1.popen('python myClient2.py')

    h2 = net.get('h2')
    h2.cmd('python myServer2.py')

    CLI( net )
    #p1.terminate()
    net.stop()

if __name__ == '__main__':
     main()

myServer2.py

代码语言:javascript
复制
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()

myClient2.py:

代码语言:javascript
复制
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])
    else:
         s.close()
s.close()
EN

回答 1

Stack Overflow用户

发布于 2018-07-11 06:15:31

首先,您应该使用TCP而不是UDP。TCP将确保您的客户端/服务器正确地接收到整个照片。UDP更多地用于内容流。绝对不是你的用例。

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

https://stackoverflow.com/questions/51274595

复制
相关文章

相似问题

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