UDP传输接收数据函数

UDP传输接收数据函数,第1张

SOCKADDR_IN from

int len =sizeof(SOCKADDR_IN)

recvfrom(m_hSocket,buffer,sizeof(buffer),0,(LPSOCKADDR)&from,&len)

m_hSocket是本地套接迟升字,兆伏函数调用后from中族旦携是消息来源的地址信息

不管是window是平台还是linux平台

接受函数会有返哗胡回值

一般返回的是接收到的字节数

通过这个来判断

一般没羡正有端口时间,

比如udp的接受函数是receive()

那么当程序执行到receive的时候,如果没有数据,程序就阻塞在这里了,直到有数据来的时候才继续执行后面的代码

所以一般的用法是开一个兄芦悔线程,接受udp的数据,这样能保证程序不阻塞

然后,当receive到来的时候,下一行代码,可以自己建立个event,然后setevent()

来通知相关的thread

windows和linux都有事件,也就是event的机制,两者使用略有不同

但是udp接收函数一般本身不会带这个功能

发送端

tic

load('data_test.mat')

s=cell(200,200)%定义待传输橘歼的数据

for i=1:200

for j=1:200

for k=1:201

b(k)=data_test_im(i,j,k)%深度位数据

end

s(i,j)={[11,i,j,b]}%待传输数据

end

end

u1 = udp('127.0.0.1', 'RemotePort', 8866, 'LocalPort', 8844)%定义udp端口号和ip

u1.OutputBufferSize=8192%传数据buffer大小

u1.Timeout=1000%传输时间限制

fopen(u1)

for i=1:200

for j=1:200

aa=s(i,j)

A=aa{:}

%flag=fread(u1,1,'嫌轿char')

fwrite(u1,A,'double')%传数据

end

flag=fread(u1,1,'char')

end

fclose(u1)

delete(u1)

clear u1

toc

接收端

tic

u2 = udp('127.0.0.1'圆者冲, 'RemotePort', 8844, 'LocalPort', 8866)

u2.InputBufferSize =8192

u2.TimeOut=100

fopen(u2)

u2.DatagramTerminateMode='off'

C=zeros(204,40000)

for i=1:40000

%fwrite(u2,flag,'char')

if(mod(i,200)~=0)

C(:,i)=fread(u2,204,'float32')

else

fwrite(u2,flag,'char')

end

end

fclose(u2)

delete(u2)

clear u2

toc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12322096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存