如何在python程序中使用UDP套接字传输文件
因此,我有一个由两个进程组成的程序,它们通常在不同的机器上运行。一个是显示服务器,另一个是控制器。现在,它们使用 UDP 数据报套接字进行通信,因为丢失的数据包仅意味着跳过了帧,而 TCP 套接字太慢。这些计算机知道彼此的 IP 地址并知道它们用于 UDP 通信的端口。
我正在寻找一种易于使用的方法,在 Python 中将文件从一个文件传输到另一个文件。我使用的是 Windows 7,因此如果解决方案是特定于 Windows 的,那么这是可以接受的。 我只是不想因为打开一堆不同的端口并同时使用 UDP 和 TCP 套接字而让事情变得太混乱,但如果这是他们唯一的方法,那也没关系。
我查看了一些 ActiveState 配方 netcopy: http://code.activestate.com/recipes/442521-windows-网络文件传输/ 它工作得很好,但到目前为止,知道将文件发送到哪个位置并获得将其发送到那里的权限一直很棘手,所以这看起来不是我想要的解决方案。
我对疯狂/独特的想法持开放态度。另外,我对网络编程还很陌生,所以如果我使用了任何错误的术语,我深表歉意。
So, I've got a program consisting of two processes, that are often running on different machines. One is a display server, the other a controller. Right now they communicate using UDP Datagram sockets, since a missed packet only means a skipped frame, and TCP sockets are too slow. These computers know each others' IP addresses and know ports they're using for UDP communications.
I'm looking for an easy-to-use way to transfer files from one to the other in Python. I'm on Windows 7, so if the solution is windows specific that's acceptable.
I just don't want things to get too messy with opening a bunch of different ports and using UDP and TCP sockets at the same time, but if that's they only way to do it, that's okay.
I've looked a bit at the ActiveState recipe netcopy:
http://code.activestate.com/recipes/442521-windows-network-file-transfers/
It works well, but knowing what location to send the file to and obtaining the permissions to send it there has been tricky so far, so this is looking like not the kind of solution I want.
I'm open to crazy/unique ideas. Also, I'm fairly new to network programming, so if I'm using any terminology wrong, I apologize.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不会使用 UDP 进行文件传输,就这样。在每一端打开 TCP 套接字并在其之上滚动您自己的文件传输协议比在 UDP 之上实现可靠传输要简单一些。
如果您确实需要在两端都有一个文件,则需要对文件名和权限进行一些管理。如果下载端只需要文件内容而不是文件系统中的实际文件,您可以将其关闭。
I would not use UDP for file transfer, period. It would be less complex to open TCP sockets on each end and roll your own file transfer protocol on top of it than to implement reliable transfer on top of UDP.
Some management of filenames and permissions will be required if you really need to have a file at both ends. You could blow it off if the download end only needed the file contents and not an actual file in the filesystem.
您可以使用 tftp 来实现此目的。
You can use tftp for this.