发送方为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