系列文章总结
【计算机网络基础——系列1】-matlab与python使用socket udp进行进程间通信
【计算机网络基础——系列2】-matlab与python使用socket tcp进行进程间通信
【计算机网络基础——系列3】输入url后页面会遇到的问题
【计算机网络基础——系列4】关于HTTP请求的相关内容
【计算机网络基础——系列5】前端遇到的三种网络攻击
【计算机网络基础——系列6】浏览器缓存之cookie、session、localstorage
【计算机网络基础——系列7】浏览器缓存之—http缓存
【计算机网络基础——系列8】前端优化总结
【计算机网络基础——系列9】restful规范;dns劫持
【计算机网络基础——系列10】osi网络结构;tcp协议保持传输的可靠性;SSL
【计算机网络基础——系列11】实现python作为服务端与qt进行udp通信
前言
进程之间的通信是可以通过socket套接字来进行的。使用udp通信协议可以实现无连接式通信,便于在短时间内传输大量数据
提示:以下是本篇文章正文内容,下面案例可供参考
一、matlab作为服务端
参数解释:
RemotePort | LocalPort | u1.OutputBufferSize | u1 | u1.Timeout | fopen(u1) | fprintf |
---|---|---|---|---|---|---|
客户端的端口号 | 服务端的端口号 | 传输给客户端的数据大小 | 创建的udp套接字 | 传输的时间限制 | 开始udp通信 | 发送文本数据给客户端,数据内容为data |
fwrite | nBytes | receive | str2num | char | sjx | fclose(u1) |
发送数据给客户端,数据内容为1000 | 进行编码操作 | 接收客户端传过来的数据 | 将字符转换为数组 | 将接收到的ascill转化为字符 | 将数组分块 | 关闭udp通信 |
pythondata_all=[];%用于存储所有的数据
u1 = udp('127.0.0.1', 'RemotePort',30001,'LocalPort', 31264);%定义udp端口号和ip
u1.OutputBufferSize=8192;%传数据buffer大小
u1.Timeout=2000000;%传输时间限制
fopen(u1);
while(1)
fprintf(u1,'data');
fwrite(u1,'1000');%上面发送文本,下面发送数字,二者不可同时一起
while(1) %轮询,直到有数据了再fread
nBytes = get(u1,'BytesAvailable');
if nBytes>0
break;
end
end
receive = fread(u1, 1024000);%读取udp服务器传来的数据
pythondata=str2num(char(receive(2:end-1)')); %将ASCII码转换为str,再将str转换为数组
pythondata_all=[pythondata_all;pythondata];
pythondata
pause(0.1);
plot(pythondata)
mat=pythondata;
\\以下是将数组分块存入matlab中的
C = size(mat);
sjx=C(1,2)/15;
for i = 1:15
for j =1:sjx
mat(i,j)=pythondata(1,100*(i-1)+j);
end
end
mat
end
fclose(u1);
二、python作为客户端
参数解释:
sock | 127.0.0.1 | 30001 | 31264 | sock.sendto | recv_date) | sleep |
---|---|---|---|---|---|---|
创建的套接字 | socket要连接的用户ip地址 | 服务端的端口号 | 客户端的端口号 | 将数据发送到服务端 | 从服务端接收到的数据内容 | 休眠 |
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(('127.0.0.1', 30001))
port = 31264
data1=1
sock.sendto(data1.encode(),('127.0.0.1',31264))
recv_date = udp_socket.recvfrom(1024000)
print('python接收matlab的内容:', recv_date[0].decode('utf-8'))
print('matlab发送人的地址:', recv_date[1])
sleep(10000)
socket.close
码字不易~, 各位看官要是看爽了,可不可以三连走一波,点赞皆有好运!,不点赞也有哈哈哈~~~
另一栏的matlab与python进行socket 的基于tcp通信:python与matlab的基于tcp的通信