核心思想
根据socket端口复用技术,发送端和接收端都声明 端口复用 且 都用bind绑定IP和端口项目要求
发送端IP和端口固定,发送给固件目标(也是固定IP和端口)后,固件目标回传数据,发送端再接收(变成了接收端),目前发送和接收分别只能在两个py文件中运行提示:以下是本篇文章正文内容,下面案例可供参考
1.发送端(发送部分)
代码如下:
#client
import socket
import struct
ip_port=('192.168.10.100', 6666) # 固件目标IP和端口
local_port=('192.168.0.1',9999) # 发送端IP和端口,也即接收端
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 端口复用声明,重要
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(local_port) #锁定IP和端口
while True:
#你要发送的内容,这部分是字符串转化为16进制数发送,只发静态数据
str_AA = 'AA66'
str1 = str_AA[0:2]
s1 = int(str1,16)#转为16进制
str2 = b''
str2 += struct.pack('B',s1)
str1 = str_AA[2:4]
s1 = int(str1,16)#转为16进制
str2 += struct.pack('B',s1)# str2 为要发送的16进制数
s.sendto(str2,ip_port)# 给固件发送
msg = input('发送信息:') # 随便输入点什么后发送str2
if msg == 'exit':
break
2.接收端(接收部分)
代码如下:
# server 接收
import socket
local_port=('192.168.0.1',9999) # 接收端的IP和端口,同发送端
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 接收端口复用声明,重要
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(local_port) #锁定IP和端口
while 1:
data=s.recv(1024) # 接收函数
print(data)
s.close()
可以用pyinstaller打包其中一个文件,这样就能同时运行了
语法:
pyinstaller -F filename