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