socket 同一端口接收与发送 udp


核心思想

根据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


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
同一端口号同时监听TCP和UDP协议,可以使用Node.js的`net`和`dgram`模块。 下面是一个简单的示例代码,它监听5000端口并同时接受TCP和UDP连接: ```javascript const net = require('net'); const dgram = require('dgram'); const server = net.createServer(socket => { // 处理TCP连接 console.log('TCP client connected'); socket.on('data', data => { console.log(`Received TCP data: ${data}`); }); socket.on('end', () => { console.log('TCP client disconnected'); }); }); const udpServer = dgram.createSocket('udp4'); udpServer.on('listening', () => { const address = udpServer.address(); console.log(`UDP server listening ${address.address}:${address.port}`); }); udpServer.on('message', (msg, rinfo) => { console.log(`Received UDP message from ${rinfo.address}:${rinfo.port}: ${msg}`); }); // 监听5000端口 server.listen(5000, () => { console.log('TCP server listening 5000'); }); udpServer.bind(5000); ``` 在这个例子中,我们创建了一个TCP服务器和一个UDP服务器。当TCP客户端连接到服务器时,会打印出“TCP client connected”。当从TCP客户端接收到数据时,会打印出“Received TCP data: ”和数据本身。当TCP客户端断开连接时,会打印出“TCP client disconnected”。 当UDP服务器启动并开始监听时,会打印出“UDP server listening ”。当从UDP客户端接收到消息时,会打印出“Received UDP message from ”、客户端的IP地址、端口号和消息本身。 注意,当你在同一端口同时监听TCP和UDP协议时,你需要确保处理的数据包正确地路由到TCP或UDP服务器,否则可能会导致数据包丢失或错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值