国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

用Delphi編寫點對點傳文件程序(1)

2019-11-18 18:45:16
字體:
來源:轉載
供稿:網友
文章摘要:
 Delphi功能強大,用Delphi寫軟件,可以大大縮短軟件的開發周期。本文介紹怎樣用Delphi編寫點對點傳文件程序。  

--------------------------------------------

  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???

上一篇:用Delphi編寫點對點傳文件程序(2)

下一篇:沉默的異常--Delphi幫助尋寶之一

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

新聞熱點

疑難解答

圖片精選

網友關注

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
久久亚洲国产成人亚| 尤物视频网站在线观看| 麻豆福利在线观看| 不卡av免费观看| 玖玖在线视频| 国产网友自拍视频导航网站在线观看| 国产欧美日韩第一页| 国产成在线观看免费视频| 国产精品扒开做爽爽爽的视频| 日本中文字幕在线视频| 国产羞羞视频在线播放| 99re热视频在线| 欧美视频免费一区二区三区| 国产天堂视频| 尤物在线视频观看| 四虎a级欧美在线观看| 狠狠操狠狠色| 国产精品第八页| 亚洲视频日韩| 天堂在线一二区| 在线观看av网站永久| 国产美女一区视频| av一级在线| 国产丝袜在线| 九九99精品| 在线免费观看污| 国产黄色免费在线观看| 国产在线观看a| 日日夜夜中文字幕| 国产精品美女视频免费观看软件| 日本成人a视频| 99在线免费视频| 国产精品伦理一区二区三区| 96精品视频| 国产一区二区三区不卡在线| 在线观看的av| 国产va在线观看| 国产日韩欧美精品一区二区三区| 免费av在线| 久久这里精品| 国产精品自产拍在线观看2019| www.操.com| 青草在线视频在线观看| 亚洲精品少妇久久久久久| 国产对白国语对白| 国产成人综合亚洲欧美在| 国产精品二线| 99热99re6国产在线播放| 国产小视频免费在线观看| 中中文字幕av在线| 国产一区精品| 国产精品9区| 在线中文视频| 在线中文字幕资源| 超碰97在线免费观看| 毛片在线视频| 狂野欧美性猛交xxxx乱大交| 九九热视频在线观看| 狠狠综合久久久综合| 最好2018中文免费视频| 国产精品爱久久久久久久小说| 国产国产国产国产国产国产| 永久免费网站在线| 精品国产高清a毛片无毒不卡| 2021天堂中文幕一二区在线观| 国产福利微拍精品一区二区| 国产精品毛片一区二区三区四区| 国产www.大片在线| 91欧洲在线视精品在亚洲| 91在线中文| 羞羞视频在线免费看| 亚洲天堂视频在线观看免费| av免费在线观看网站| 亚洲精品白浆| 国产69久久| 国产超碰在线| 日本欧美在线视频免费观看| 欧美xxxx黑人又粗又长| 亚洲综合激情六月婷婷在线观看| 在线观看av网站| 黄色网址在线免费播放| 国产视频三区| 四虎成人精品在永久免费| 欧美亚洲天堂| 中文字幕免费在线视频| 2021av在线| 国产在线观看网站| 99中文字幕一区| 国产又色又爽又黄刺激在线视频| 精品卡一卡卡2卡3网站| jizz在线视频| 91久久精品国产性色| 精品中文字幕不卡在线视频| 国产国语**毛片高清视频| 亚洲sss视频| 2019中文字幕在线视频| 激情网站在线| 在线观看国产视频| 国产区视频在线观看| 国产美女极品在线| 日韩a视频在线观看| 国产精品免费视频二三区| 亚洲图区综合| 91蜜桃在线视频| 国产黄色av免费看| 国产一二三区精品视频| 久热中文字幕| 久久综合精品视频| 中文av资源在线| 国产porn在线| 国产网站在线免费观看| 天天操天天操天天色天天要| 国产麻豆精品高清在线播放 | 国产永久免费高清在线观看视频| 国产精品视频一区二区久久| 激情丁香久久| 免费看成年人视频在线观看| av一级在线| av网站大全在线| av在线资源网| 免费国产阿v视频在线观看| 国产白浆在线| 在线āv视频| 丁香六月婷婷| 国产三级香港三韩国三级| 国产精品国产三级国产试看| 国产黄色片中文字幕| 中文av在线播放| 日本福利午夜视频在线| 交换国产精品视频一区| 国产精品一品| 国产二级c片l毛片| 亚洲精品xxxxx| 最新av免费看| 亚洲大香人伊一本线| 久久久久久久久免费视频| 欧美午夜电影一区二区三区| 国产在线视频自拍| 国产精品伦一区二区三区视频| 精精国产xxxx视频在线中文版| 欧美亚洲另类在线观看| 午夜视频免费在线观看| 97最新国自产拍视频在线完整在线看 | 精品资源在线看| 中文字幕一区免费| 亚洲欧洲成人| 国产三级自拍| 在线视频三区| 国产在线视频精品视频免费看| 国产一级影片| 欧美日韩一区二区三区在线播放| 99视频资源网| 日本高清中文字幕在线| 最新黄网在线观看| 日本在线免费中文字幕| 国产黄视频在线观看| 国产中文字幕第一页| 亚洲激情丁香| h网站免费在线观看| 精品国产高清a毛片无毒不卡| 国产免费麻豆视频| 免费国产阿v视频在线观看| 中文字幕在线视频网| 香蕉视频在线观看www| 国产视频二区三区| 狠狠狠综合7777久夜色撩人| 在线视频观看你懂的| 国产精品剧情一区二区三区| 国产又色又爽又黄刺激在线视频| 另类综合图区| 久久久久久日本一区99| a视频免费看| 性色视频在线| 亚洲图区综合| 亚洲jjzzjjzz在线观看| 亚洲精品自拍区在线观看| 伊人免费视频| 国产精品久久久久久福利| 国产视频精品久久| 国产精品jvid在线观看| 18av在线播放| 国产福利在线看| 97福利电影| 在线观看电影av| 在线观看av中文| 四虎成人精品在永久免费| 欧美96在线| 资源视频在线播放免费| 国产精品白浆视频免费观看| 国产福利电影在线观看| www.狠狠| 国产乱子视频| 国产午夜精品一区理论片| 国产精品视频一区麻豆| 69国产精品| 国产在线三区| 中文天堂av| 国产免费永久在线观看| 国产精品久久在线| 日本黄色免费网址|