python使用socket在同一局域网下不同电脑传输数据(udp) |
您所在的位置:网站首页 › 不同网段摄像头怎么连接在一台电脑上 › python使用socket在同一局域网下不同电脑传输数据(udp) |
本次使用udp协议传输数据(即套件字选择udp对应的参数) 一、前置 条件:导入socket包,一个局域网下两台电脑(或者本地创建一个win虚拟机) 二、发送数据 1、创建套件字 2、发送数据 3、关闭套件字 import socket def main(): #创建一个udp套件字 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #使用套件字收发数据 send_data=input('请输入想要发送的数据:') #目标IP 和端口,元组类型 ip_adders=('192.168.25.134',7788) udp_socket.sendto(send_data.encode('utf-8'),ip_adders) #关闭套件字 udp_socket.close() if __name__ == '__main__': main() 三、接收数据 1、创建套件字 2、绑定本地信息(ip和端口port) 3、接收数据 4、关闭套件字 import socket def main(): #创建一个udp套件字 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #绑定本地相关信息,如果不绑定,则系统会随机分配,必须绑定本电脑的ip和port local_addr =('' ,7788) #元组的第一个参数为本机IP,可以为空字符串,会自动生成本机IP udp_socket.bind(local_addr) #等待接收方发送数据 #rs中存储的是一个元组(接收到的数据,(发送方的ip,port)) rs_data=udp_socket.recvfrom(1024) rs_masg =rs_data[0] rs_addr =rs_data[1] print(rs_data) #接收到的数据解码展示 print(rs_masg.decode('utf-8')) print(rs_addr) #关闭套件字 udp_socket.close() if __name__ == '__main__': main()接收到的数据:(接收到的数据,(发送方的ip,port)) 以上是单次发送和接收数据,想要一直发送和接收数据,将发送和接收数据代码放入 while True循环中即可。 当然你也可以在一台电脑上自己发给自己,哈哈。只要把目标IP换成本机的IP地址就可以了。 四、注意!!: recvfrom在没有收到链接或者数据时是会造成函数堵塞的!!类似于input,只不过input的等待你在命令行输入数据,而recvfrom是等待客户端或者服务端的链接和数据。可以通过代码:server_socket.setblocking(False) 设置套接字为非堵塞模式,但是设置成非堵塞模式后,recv接收不到数据,会抛异常,可以自己加异常处理 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |