?? winsocket網(wǎng)絡(luò)編程談.txt
字號(hào):
作者:五一
日期:00-7-7 下午 02:01:48
(作者:李其 2000年07月07日 13:34)
Winsocket編程是非常復(fù)雜的,這令一般人望而生畏。但如果你想編寫這樣的程序,又不懂得相關(guān)知識(shí),怎么辦呢?Delphi的網(wǎng)絡(luò)組件庫(kù)中為我們提供了關(guān)于實(shí)現(xiàn)網(wǎng)絡(luò)通信的組件,其中ClientSocket和ServerSocket組件使我們能夠很方便地編寫出自己的網(wǎng)絡(luò)通信和資源共享程序。
一、設(shè)置Winsocket屬性
在Delphi 4.0中,將Winsocket細(xì)分為兩種組件:ClientSocket和ServerSocket,它們分別作為客戶端和服務(wù)器端的組件。通過這兩種組件之間的通信,再加上輔助的應(yīng)用程序代碼,就可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的通信程序。當(dāng)然,如果你想在客戶端程序中再引入ServerSocket的話,那么客戶端程序就可以充當(dāng)服務(wù)器了,可以對(duì)其他的客戶端程序的請(qǐng)求進(jìn)行響應(yīng)。
如果正在編寫服務(wù)器端程序,就必須設(shè)置ServerSocket組件的Port屬性。設(shè)置此參數(shù)主要是因?yàn)樵谕慌_(tái)計(jì)算機(jī)上可能運(yùn)行著多個(gè)服務(wù)器程序,而它們可能總在不停地接受來自于遠(yuǎn)程客戶端程序的連接請(qǐng)求。也可以設(shè)置Service屬性,它指示了ServerSocket所提供的服務(wù)類型,比如:FTP、HTTP等,然后設(shè)置Active屬性為True。
如果正在編寫客戶端程序,則設(shè)置ClientServer組件的屬性就多一些。Port屬性應(yīng)設(shè)置成和服務(wù)器端的Port屬性值一致,另外Host的屬性必須正確設(shè)置,它是一個(gè)只讀屬性,在設(shè)計(jì)時(shí)不可用。Host指示了客戶程序所要連接的遠(yuǎn)程服務(wù)器的主機(jī)名。也可以設(shè)置Address屬性,也就是遠(yuǎn)程主機(jī)的IP地址。
二、建立與遠(yuǎn)程計(jì)算機(jī)的連接
要在遠(yuǎn)程計(jì)算機(jī)系統(tǒng)之間進(jìn)行數(shù)據(jù)傳輸,首先必須在通信的兩臺(tái)主機(jī)之間建立連接。
服務(wù)器端的ServerSocket組件調(diào)用Open方法初始化Socket連接,同時(shí)也就設(shè)置了Active屬性為True,將ServerSocket組件設(shè)置成偵聽模式,隨時(shí)偵測(cè)是否有連接請(qǐng)求。
如果服務(wù)器接受了客戶程序的連接請(qǐng)求,則觸發(fā)OnAccept事件,如下代碼就是處理接受連接后服務(wù)器程序所要做的工作。
procedure Myform..ServerSocketAccept(Sender: TObject,Socket: TCustomWinSocket);
begin
IsServer := True;
end;
在客戶端程序中,ClientSocket組件則設(shè)置Port、Host等必須的屬性,然后設(shè)置Active屬性為True,提出連接請(qǐng)求。
三、計(jì)算機(jī)之間的數(shù)據(jù)傳輸
一旦服務(wù)器端接受了客戶機(jī)方面的連接請(qǐng)求,客戶機(jī)就可以發(fā)送數(shù)據(jù)。這時(shí),在客戶機(jī)和服務(wù)器之間就擁有了一個(gè)Socket,通過此Socket雙方實(shí)現(xiàn)通信。所以Socket屬性很重要,它又擁有很多的方法,用其中的幾個(gè)簡(jiǎn)單的方法,就可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收。
客戶機(jī)端用如下形式:ClientSocket1.socket.sendtext('string you want to send');
在服務(wù)器端采用如下形式:ServerSocket1.socket.recievetext( str: string);
此函數(shù)返回接收到的字符串的長(zhǎng)度,將字符串存儲(chǔ)在變量str中。
上述是數(shù)據(jù)傳輸?shù)淖詈?jiǎn)單的例子,你還可以采用Socket屬性所提供的其他方法來實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)傳輸。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -