python实现数据传输

前言.

        这个程序救了我一命,具体的后面再说

正文.

        作用.

                没啥好说的,作用肯定就是数据传输了,而且这个文件配合一些操作,甚至可以实现传文件

        导入.

                这次要用到一个很强大的python第三方库——socket

                不用非常仔细地去研究这个库,不过还是要背一些东西的

              UDP协议

                        今天就要用这个协议来传输

                        作为一种无连接协议,UDP他只管发送,不管接收(或者只管接收,不管发送),说白了就是我发出去就行了,接没接到关我屁事。也就是说,它可以绑定到任意端口(无论开没开),也能发送数据到任意端口。众所周知,一台机器不是所有端口都打开的(也许有,反正我没见过),而利用UDP的无连接特性,可以完美解决这种因为端口没打开而无法传输的问题,这也是为什么今天要用UDP。

                TCP协议

                        这是一种有连接协议

                        这个需要目标机器开启,且目标端口开启,如果没开启会连接失败,而且如果你连接成功,但是如果程序运行完了,你却没关闭连接,就会导致端口占用,然后就不能再连接了(除非手动关闭)。

        思路.

                如果要实现你说一句,我回一句,但如果你不说,我也不能说,你说完,我才能说,而且我不说完,你发的所有信息我都接收不到的这种功能,只用写一种程序。但想实现像微信、QQ那样实时传输,就要写两个(也不复杂,一个接收、一个发送,搞懂原理后其实很简单)

        需要用到的部分工具.

                1.socket

                        这里详细讲一下socket

                        socket可以指定协议,修改默认参数,发送、绑定、接收等等

                        首先是指定协议

                        你需要把协议指定到一个变量(变量名不能是python关键字,之前我用了python关键字socket,导致无法发送),如把UDP协议指定给变量s:

                        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

                        AF_INET指我们要用IPv4(类似123.123.123.123这种,IPv6是aa:aa:aa:aa:aa:aa这种),SOCK_DGRAM指UDP协议

                        这样就可以用s变量来做一些操作了

                        然后是修改默认参数

                        修改默认参数在UDP里作用不大,比较常用的只有一条:

                        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

                        这个可以设置端口复用,避免出现address already in use(端口被占用)

                        接着是发送、绑定、接收

                        首先是发送

                        发送需要指定发送内容(需要是字节,不能是其他类型)、目标IP(不必开启)、目标端口(不必开放),如我想发送"Hello"到192.100.100.100的12345端口:

                        client = 'Hello'

                        s.sendto(client.encode(), ('192.100.100.100', 12345))

                        client.encode()指把字符串类型的'Hello'转为字节类型

                        其实字节也可以用b'Hello'来表示,b表示bytes(字节)

                        (b''里面的东西不能是中文,不过client变量里面倒是能填中文,然后用encode来转换)

                        然后是绑定

                        用bind函数(感觉像谐音)

                        bind需要指定IP和端口,如我要绑定到192.160.100.100的123端口&

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,协程数据传输管道可以通过使用通道(channel)来实现。通道是一种用于在协程之间传递数据的通信机制。通过使用通道,一个协程可以将数据发送到另一个协程,从而实现数据传输。 引用提到了Python进行数据增强时可以通过裁剪、旋转、翻转、增加噪声、变暗、变亮等操作来对数据集进行扩充。这些操作可以通过协程之间的通道来传输数据。通过将数据发送到通道中,另一个协程可以接收并处理这些数据。 引用提供了一个例子,展示了如何使用协程和通道来实现数据传输。在这个例子中,一个协程用于将数据写入管道,另一个协程用于遍历管道并取得数据。通过向管道发送数据和从管道接收数据,可以实现协程之间的数据传输。 引用提到了使用内置函数`close`可以关闭通道。关闭后的通道不能再写入数据,但仍可以读取数据。这意味着在协程完成数据传输后,可以通过关闭通道来通知其他协程数据传输已经完成。 综上所述,Python中的协程数据传输管道可以通过使用通道来实现,在协程之间通过发送和接收数据实现数据传输。同时,可以使用内置函数`close`来关闭通道。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python进行数据增强](https://download.csdn.net/download/doyoboy/88278532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python转go学习笔记———协程和管道](https://blog.csdn.net/flandreflor/article/details/123083884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值