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

你可能感兴趣的:(tcpip,matlab)