MATLAB tcpip发送和接收文件

发送方为server,接收方为client,建立TCP链接。

发送方:

function sendfile( filename,ip,port )
%SENDFILE 读取文件并发送出去
%   filename:文件名
%   ip:目的主机的ip地址
%

% 先打开文件
fid = fopen(filename ,'rb');
if( fid<=0 )
    fprintf('打开失败!\n');
    return;
end
% 然后判断文件是不是过大
Data = fread(fid);
fclose(fid);
L = length(Data);
if( L>1e6 )
    fprintf('文件太大了!\n');
    return;
end
% 建立tcp链接,发送方为server
sender = tcpip(ip,port,'NetworkRole','server');
sender.OutputBufferSize = 1e6;
fopen(sender);
fwrite(sender,L,'uint32');
fwrite(sender,Data);
ack = fread(sender,2);
fclose(sender);
ack = char(ack');
if( strcmp(ack,'ok') )
    fprintf('发送成功!\n');
end

end

接收方

function    recvfile( filename,ip,port )
%FILENAME 接收文件并保存
%  recvfile(filename)
%  filename:保存的文件名
%  ip:发送方的ip地址
%  port:端口号

%建立一个tcp对象
listen = tcpip(ip,port,'NetworkRole','client');
listen.InputBufferSize = 1e6;
%等待响应
fopen(listen);                      
%先得到文件的大小
SIZE = fread(listen,1,'uint32');           
%接收文件内容
data = fread(listen,SIZE);        
%接收成功确认
fwrite(listen,'ok');
%关闭链接
fclose(listen);
%写入文件
fid = fopen(filename,'wb');
fwrite(fid,data);
fclose(fid);
fprintf('接收成功并且已经写入文件\n');
end
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值