日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > Delphi > 正文

用Delphi編寫點對點傳文件程序

2019-11-18 18:47:57
字體:
來源:轉載
供稿:網友
Delphi功能強大,用Delphi寫軟件,可以大大縮短軟件的開發周期。關于點對點傳文件的基本思路,就是一個服務器軟件,一個客戶端軟件,使用同一個端口,待連接上以后,客戶端給服務器發送一個請求,包括待傳的文件的文件名,大小等,如果服務器接受,就開始傳文件。當然,文件傳輸的時候可以有兩種模式,ASCII碼和Bin,不過一般通用Bin 就可以了?;谏厦娴挠懻?,本來用Delphi4的NMStrm,NMStrmServ 控件就可以完成,但是我測試過了,NMStrm控件對于較小的文件還可以使用,而且很方便,但是如果文件一大(1M)就會出錯。所以接下來我們利用Delphi中TServerSocket和TClientSocket寫這個程序由于以太包大小的限制以及DelphiSocket的處理機制(Delphi中,當你用一個Socket發送一個較大的Stream,接受方會激發多次OnRead事件,Delphi她只保證多次OnRead事件中每次數據的完整,而不會自己收集數據并返回給用戶。所以不要以為你把待傳文件在一個Socket中Send一次,另一個中Recv一次就可以了。你必須自己收集數據或自己定義協議。),所以我們采用自定義協議的方法。定義協議的規范方法是利用Record End。如:
TMyFilePRotocol=Record
sSendType=(ST_QUERY,ST_REFUSE,ST_DATA,ST_ABORT,...);
iLength:integer;
bufSend:Buffer;
End;
  我曾試過這個辦法,但失敗了,而且我一直認為我的方法是正確的,但程序一直編譯通不過,估計是Delphi有問題:) 所以我在下列的范例程序中利用另外一種辦法。Socket 類中有兩屬性ReceiveText和ReceiveBuf,在一個OnRead事件中,只能使用一次該兩屬性,所以我們可以利用一個全程變量來保存是該讀Text還是Buf,也就是說讀一次Text,再都一次Buf,這就模擬了TMyFileProtocol。

開始程序:
寫一個最簡單的,主要用于講解方法。
定義協議:
Const
MP_QUERY ='1';
MP_REFUSE ='2';
MP_ACCEPT ='3';
MP_NEXTWILLBEDATA='4';
MP_DATA ='5';
MP_ABORT ='6';
MP_OVER ='7';
MP_CHAT ='8';

協議簡介:
首先由Client發送MP_QUERY,Server接受到后發送MP_ACCEPT或MP_FEFUESE;
Client接受到MP_ACCEPT發送MP_FILEPROPERTY,Server接受到后發送MP_NEXTWILLBEDATA;
Client接受到發送MP_NEXTWILLBEDATA,Server接受到后發送MP_DATA;
Client接受到MP_DATA,發送數據,Server接受數據,并發送MP_NEXTWILLBEDATA;
循環,直到Client發送MP_OVER;
中間可以互相發送MP_CHAT+String;

Server程序:
放上以下控件:SaveDialog1,btnStartServer,
ss,(TServerSocket)

btnStartServer.OnClick(Sender:TObject);
begin
ss.Port:=2000;
ss.Open;
end;

ss.OnClientRead(Sender: TObject;Socket: TCustomWinSocket);
var
sTemp:string;
bufRecv:Pointer;
iRecvLength:integer;
begin
if bReadText then
begin
sTemp:=Socket.ReceiveText;
case sTemp[1] of
MP_QUERY:begin
//在這里拒絕
SaveDialog1.FileName:=Copy(sTemp,2,Length(STemp));
if SaveDialog1.Execute then
begin
Socket.SendText(MP_ACCEPT);
fsRecv:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
end
else Socket.SendText(MP_REFUSE+'去死');
end;
MP_FILEPROPERTY:begin
//要發送StrToInt(Copy(sTemp,2,Length(sTemp))) 次
//時間進度顯示。。。
Socket.SendText(MP_NEXTWILLBEDATA);
end;
MP_NEXTWILLBEDATA:begin
Socket.SendText(MP_DATA);
bReadText:=false;
end;
MP_END:begin
fsRecv.Free
bReadText:=true;
end;
MP_ABORT:begin
fsRecv.Free;
bReadText:=true;
end;
MP_CHAT:begin
//Chat Msg
end;
end;{of case}
end
else begin
try
GetMem(bufRecv,2000);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv^,iRecvLength);
fsRecv.WriteBuffer(bufRecv^,iRecvLength);
finally
FreeMem(bufRecv,2000);
end;{of try}
bReadText:=true;
Socket.SendText(MP_NEXTWILLBEDATA);
end;
end;

Client程序:
放上以下控件:edtipAddress,OpenDialog1,btnConnect,btnSendFile,
cs. (TClientSocket)

btnConnect.OnClick(Sender:TObject);
begin
cs.Address:=edtIPAddress.Text;
cs.Port:=2000;
cs.Connect;
end;

btnSendFile.OnClick(Sender:TObject);
begin
if OpenDialog1.Execute then
Begin
cs.Socket.SendText(MP_QUERY+OpenDialog1.FileName);//FileSize???
end;
end;

cs.OnRead(Sender: TObject;Socket: TCustomWinSocket);
var
sTemp:string;
bufSend:pointer;
begin
sRecv:=Socket.ReceiveText;
Case sRecv[1] of
MP_REFUSE:ShowMessage('Faint,be refused!');
MP_ACCEPT:begin
fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpen);
//iBYTEPERSEND是個常量,每次發送包的大小。
Socket.SendText(MP_FILEPROPERTY+Trunc(fsSend.Size/iBYTEPERSEND)+1);
end;
MP_NEXTWILLBEDATA:begin
Socket.SendText(MP_NEXTWILLBEDATA);
end;
MP_DATA:begin
try
GetMem(bufSend,iBYTEPERSEND+1);
if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then
begin
fsSend.Read(bufSend^,iBYTEPERSEND);
Socket.SendBuf(bufSend^,iBYTEPERSEND);
fsSend.Free;
end//普通的發送,大小為iBYTEPERSEND
else begin
fsSend.Read(bufSend^,fsSend.Size-fsSend.Position-1);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
end;//最后一次發送,發送剩余的數據
finally
FreeMem(bufSend,iBYTEPERSEND+1);
end;{of try}
end;
MP_ABORT:begin
//被取消了:(
fsSend.Free;
end;
end;{of case}
end;


整理程序:
  加入錯誤判斷,優化程序,把Server和Client聯合在一起,加入剩余時間進度顯示,做成能一次傳多個文件,加入聊天功能,就成了一個很好的點對點傳文件的程序。


上一篇:Delphi流操作技巧總結

下一篇:Delphi第三方控件全面評比介紹(玉笛書生)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

日韩免费久久| 中文字幕 乱码 中文乱码91| 伊人亚洲视频| 日韩精品在线观看视频| 久久精品国产成人一区二区三区| 丰满少妇一区| 中文字幕精品在线视频| 色综合影院在线| 高清日韩中文字幕| 国产啊啊啊视频在线观看| 日韩综合精品| 久久99久久久久| 91精品久久久久久蜜臀| 中文字幕久久av| av免费在线观看网址| 免费视频二区| 亚洲欧美日本国产专区一区| 欧美日韩国产免费观看视频| 日韩欧美亚洲区| 国产天堂素人系列在线视频| 日本a级黄色| 精品一区二区三区中文字幕在线| 中文在线日韩| 国产成人精品999| 欧美日韩三级在线| av最新网址| 国产成人日日夜夜| 国产高清在线观看| 一二三区精品视频| 中文字幕在线国产| 精品欧美日韩精品| 国产不卡的av| 中文字幕一区不卡| 日韩在线视频网| 国产91一区| 色偷偷一区二区三区| 精品国产欧美日韩不卡在线观看| 欧美国产一级| 色99中文字幕| aaa欧美日韩| 中文字幕2020第一页| 亚洲欧洲日韩在线| 欧美日韩在线播放一区| 国产 中文 字幕 日韩 在线| 欧美二三四区| 不卡视频一区二区| 77777_亚洲午夜久久多人| 国产婷婷色一区二区三区 | 91精品电影| 国产一区免费视频| 欧美激情视频一区二区三区在线播放| 日韩在线观看精品| 国产成人精品999在线观看| 美女黄a一级视频| 欧美日韩国产系列| 亚洲欧美中文字幕在线一区| 免费国产h视频在线观看86| 日韩在线视频免费观看| 欧美日韩综合在线免费观看| 亚洲 欧美综合在线网络| 久久精品免费看| 国产欧亚日韩视频| 一级片免费网站| 亚洲综合在线中文字幕| 欧美激情一区二区三区在线| 91精品国产经典在线观看| 国产一级视频| 亚洲免费精品| 九一久久久久久| 中文字幕亚洲一区在线观看| aaa欧美日韩| 精品久久久久久综合日本欧美| 日本熟女一区二区| 丰满少妇一区二区| 综合激情国产一区| 精品一区二区三区中文字幕在线| 一区二区在线观| 日韩1区在线| 亚洲欧美中文在线视频| 高清日韩中文字幕| 精品网站999www| 欧美日韩精品三区| 一区二区高清视频| 黄色欧美日韩| 国产欧美日韩视频| 欧美日韩久久久| 欧美日韩综合视频| 日韩 国产 一区| 亚洲黄色www| 日韩中文字幕第一页| 欧美日韩中文字幕在线观看| 日韩欧美中文字幕公布| 午夜一区二区三区免费| 日韩精品视频在线播放| 国产黄色一级片| 91精品国产综合久久香蕉最新版| 中文字幕成人乱码在线电影| 欧美日韩免费不卡视频一区二区三区| 精品全国在线一区二区| 国产欧美综合在线观看第十页| 国产视频不卡| 欧美日韩国产中文| 国产欧美日韩视频在线| 77777_亚洲午夜久久多人| 欧美在线亚洲一区| 午夜国产在线视频| 久久久99免费| 一区二区三区在线播放欧美| 国产欧美日韩精品高清二区综合区| 一区二区三区在线播放视频| 国产欧美日韩精品在线| 精品成a人在线观看| 中文字幕在线观看视频www| 亚洲美女视频一区| 欧美日韩中文字幕在线| 欧美日韩在线看| 亚洲欧洲综合另类| 91精品国产全国免费观看| 日韩精品视频在线观看免费| 欧美日韩在线播放三区四区| 亚洲黄色www| 欧美日韩国产高清| 蜜臀91精品国产高清在线观看| 国产一级在线播放| 国产一区二中文字幕在线看| 欧美日韩精品在线| 欧美亚洲另类制服自拍| 一区二区三区精品在线观看| 伊人中文字幕在线观看| 欧美日韩国产区| 精品婷婷伊人一区三区三| 91精品国产综合久久蜜臀 | 亚洲免费中文字幕| 国产视频一二区| av免费网站在线| 91精品观看| 午夜视频在线观看一区| 精品激情国产视频| 日韩三级在线播放| 正在播放日韩精品| 日韩视频精品| 欧美日韩国产高清| 91精品国产入口| 国产小视频在线| 日韩精品视频在线观看网址 | 国产高清精品二区| 国产欧美中文在线| 亚洲福利精品| 欧洲精品久久久| 日韩欧美三级在线| 欧美日韩高清一区二区不卡| 国产99在线 | 亚洲| 亚洲热线99精品视频| 精品不卡一区二区| 91精品国产高清久久久久久| 日韩在线视频免费观看| 麻豆精品99| 97天天综合网| 国产黄色片大全| 91久久精品国产91久久| 亚洲男人在线| 日韩不卡一二区| 国产亚洲污的网站| 精品久久电影| 亚洲男女av一区二区| 国产在线观看色| 一区二区三区在线|网站| 国产乱一区二区| 国产免费播放一区二区| 欧美三级中文字幕| 国产成人精品999| 中文字幕伊人| 99精品电影| 一区二区不卡在线| 国产在线观看色| 午夜精品一区二区三区免费视频| 色综合久久六月婷婷中文字幕| 婷婷中文字幕在线观看| 国产资源中文字幕| 999精品色在线播放| 国产高清一区| 日韩国产高清一区| 欧美亚洲免费高清在线观看| 国产婷婷色一区二区三区在线| 国产欧美日韩视频在线| 欧美三级日韩三级| 亚洲高清精品视频| 91精品无人成人www| 精品日韩在线观看| 樱花草www在线观看| 日韩精品视频免费| 一区二区不卡视频| 欧美日韩亚洲国内综合网俺| 午夜亚洲一区| 日韩国产成人精品| 韩国一区二区av| 亚洲女人天堂色在线7777| 国产www.大片在线| 91九色在线看| 中文字幕狠狠干| 91日韩中文字幕| 欧美三级日韩三级国产三级| 国产黄色精品| 福利一区二区| 一区二区在线观看不卡| 欧美日韩中文字幕| 欧洲一级精品| 欧美日韩午夜在线| 亚洲综合在线中文字幕| av免费在线不卡| 亚洲欧美伊人| 欧美日韩国产在线| 日本中文字幕在线观看| 中文字幕在线视频网| 91精品国产经典在线观看| 国产欧美中文在线| 国产在线第一页| 亚洲高清中文字幕| 中文字幕成人乱码在线电影| 中文字幕久久精品| 影音先锋中文字幕在线观看| 国产亚洲视频中文字幕视频| 一级网站免费观看| 91麻豆精品在线| 亚洲一区在线观看网站| 日韩视频中文| 日韩午夜一区| 999精品网| 久久中文免费视频| 日韩中文字幕在线播放| 亚洲经典中文字幕| 亚洲成年人在线播放| 精品久久在线观看| 精品国产999| 日韩在线视频网| 搞黄在线观看| 91国内在线| 欧美日韩精品三区| 中文字幕日韩精品在线| 国产拍揄自揄精品视频麻豆| 在线观看一区| 99这里有精品视频| 欧美91精品| 中文字幕99| 日韩三级免费观看| 91精品国产综合久久久久久| 日韩欧美国产免费播放| 91精品国产综合久久久久久| wwww亚洲| 日韩中文字幕亚洲| 日韩在线一区二区| 91精品国产自产在线| 欧美 日韩 国产 高清| 精品午夜av| 欧美日韩一二| 国产乱国产乱老熟300| 97国产视频| 二区中文字幕| 国产区在线看| 亚洲天堂国产视频| 欧美国产综合在线V| 国产在线拍偷自揄拍精品| 91精品国产综合久久久久久漫画| 欧美日韩国产免费观看视频| 国产在成人精品线拍偷自揄拍| 91精品国产综合久久久久久| 中文字幕五月欧美| 精品日韩99亚洲| 日韩精品在线播放| 欧美日韩三级视频| 亚洲免费精品视频| 国产日韩精品在线| 国产无遮挡在线视频免费观看| 男人的天堂网av| 欧美日韩国产大片| 国产香蕉精品视频| 99视频一区| 77777_亚洲午夜久久多人| 中文字幕国产亚洲| 欧美一级免费看| 午夜亚洲一区| 粉嫩喷白浆久久| 中文字幕4区| 国产日韩在线视频| 久久久久久久久99精品| www.狠狠| 拍真实国产伦偷精品| 欧美日韩中文字幕综合视频| 亚洲福利视频在线| 亚洲二区自拍| 中文字幕 欧美日韩| 日韩精品在线私人| 日韩va亚洲va欧洲va国产| 免费看日韩精品| 欧美成人精品在线| 91精品国产综合久久久久久| 中文字幕欧美日韩| 久久99精品久久久久子伦| 九九视频精品免费| 欧美日韩国产专区| 欧美中文字幕视频| 欧美久久在线| 国产在线欧美| 欧美日韩久久不卡| 免费高清视频日韩| 精品成a人在线观看| 欧美日韩国产首页在线观看| 国产日韩中文字幕| 日韩色在线观看| av影视在线看| 欧美日韩精品免费看| 日韩色在线观看| 欧美一级欧美三级在线观看| 中文字幕在线观看播放| 天天综合日日夜夜精品| 亚洲狠狠婷婷综合久久久久图片| 久久av免费| 国产一卡2卡3卡四卡网站| 精品一区二区三区中文字幕在线| 欧美日韩综合视频| 91麻豆精品国产91久久久使用方法 | 最近高清中文在线字幕在线观看1| 婷婷精品进入| 亚洲三级网站| 日韩高清在线一区二区| 在线观看区一区二| 色综合天天性综合| 亚洲一区在线观看网站| 国内精品99| 欧美日韩久久久| 午夜一区二区三区| 国产1卡2卡三卡四卡网站| 久久精品日韩无码| 亚洲一区二区三区精品中文字幕| 久久久久久99精品| 精品国产综合久久| 91久久久久| 精品999在线| 日韩欧美综合在线| 美日韩精品免费视频| 国产网站av| 国产乱国产乱300精品| 久久99精品久久久久久青青日本| 精品成人久久久| 午夜伊人狠狠久久| 日韩中文首页| 欧美日韩亚洲国内综合网| 久久欧美中文字幕| 一区免费在线| 91精品国产综合久久蜜臀| 国产一级免费看| 国产欧美日韩精品在线观看| 中文字幕在线视频久| 国产欧美日韩第一页| 国产成人综合av| 国产日韩精品在线| 中文字幕精品在线播放| 国产久卡久卡久卡久卡视频精品| 国产传媒久久久| 91久久精品在线| 日韩欧美成人一区二区三区| 日韩中文字幕视频在线观看| 狠狠色综合色区| 欧美wwww| 亚洲综合在线不卡| 日韩精品视频在线看| 一区二区三区在线免费| 亚洲福利在线看| 精品国产91乱高清在线观看| 国产一区日韩欧美| 91精品国产免费| 深夜福利一区| 午夜一区二区三区| 日韩高清在线不卡| 中文字幕在线视频第一页| 欧美一级久久| 久久精品久久精品亚洲人| 成人久久久久| 99视频精品全国免费| 久久久久久久久99精品| 在线国产1区| 一区在线视频观看| 日韩在线视频网| 在线视频日韩欧美| 日韩国产在线观看一区| 中文字幕伊人| 国产aa精品| 欧美日韩国产中字| 欧美午夜精品在线| 日韩中文字幕视频在线| 欧美日韩中文字幕精品| 日韩在线视频网| 精品人妻一区二区三区视频| 久久精品日韩无码| 人妻一区二区三区免费| 内射国产内射夫妻免费频道| 国产69精品久久app免费版| 亚洲va久久久噜噜噜久久| 国产欧美日韩在线观看| 欧美亚洲国产日韩2020|