ServerSocket的控件屬性
threadcachsize:創建服務器線程的最大數目。
port:確定服務器的監視端口。
service:客戶通過此屬性來識別服務器端口。
ClientSocket的控件屬性
Socket:此屬性參數是應用程序之間通信的端點。
Address:此屬性參數為字符串類型,客戶端確定服務器端的IP地址。 Host:服務器端的主機名稱。
Post:服務器端的監視端口。
Servce:用來識別服務器端口。
Active:確定Socket是否可用(true表示可用)。
ClientType:指定客戶機採用哪一種方式(異步/同步)來通信。
ServerSocket的事件
onclientconnect:客戶與服務器連接且服務器接收申請後,產生此事件。 onclientdisconnect:當和服務器連接的某一個客戶機關閉連接後產生此事件。
onGetSocket:一個服務器可以接收多個客戶Socket的連接申請。 onGetThread:當ClientType屬性值設為StrThreadBlocking時,服務器會產生一個單獨的線程來與客戶的連接。
onAccept:服務器接收客戶的連接申請後,產生此事件。
onClientRead:客戶機發送數據到服務器時產生的事件。
ClentSocket事件
onConnect:當客戶端與服務器端連接上後,產生此事件。
onConnecing:當客戶端與服務器端進行連接操作時,產生此事件。 onDisconnect:當客戶端關閉操作後產生此事件。
onError:在客戶與服務器在建立和通信過程中,如果產生錯誤時,產生此事件。
onLookup:當客戶在計算機網絡中尋找服務器時,產生此事件。
onRead:數據到達時產生此事件。
1. 建立連接
服務器端:
ServerSocket.Port:=9999 //你想要設置的監聽端口
ServerSocket.open;//開始監聽
服務器端至此一直在監聽9999端口,若客戶端有連接請求,則OnAccept事件被激活。procedure TForm1.ServerSocketAccept(Sender: TObject;Socket: TCustomWinSocket);
begin
//連接被接受時的代碼。
end;
客戶端:
ClientSocket.Host := Server;//設置主機名
//或設置服務器端地址ClientSocket.address:=服務器端地址
ClientSocket.Port:=9999;
ClientSocket.Active := True;//請求建立連接。
2. 通信
客戶端:
clientsocket.Socket.SendText(』所發送的信息』);//通過調用該函數發送信息
客戶端接收來自服務器端的信息
procedure TForm1.ClientSocket2Read(Sender:TObject;Socket:TCustomWinSocket);
begin
Edit2.Text:=socket.ReceiveText;//得到服務器端發來的信息
end;
服務器端:
服務器端收到客戶端發來的信息,則會激活ServerSocketClientRead事件,通過ServerSocket的Socket.ReceiveText可以得到信息的內容。
procedure TForm1.ServerSocketClientRead(Sender:TObject;Socket:TCustomWinSocket);
begin
Edit1.Text:=Socket.ReceiveText;//得到客戶端發來的信息
end;
服務器端向客戶發送信息用ServerSocket.socket.connections[0].sendtext(』信息內容』);
3. 關閉連接
客房端通過ClientSocket.close關閉連接。
服務器將激活OnDisconnect事件
procedure TForm1.ServerSocketClientDiscon
begin
ServerSocket.Active := False;//服務器關閉監聽
end
-------------------------------------------------------------------------------------------------------------------------
IdTCPClient屬性
1 : IOHandler
如果有相應的輸入/輸出操作,那麼IOHandler相對應的組件或接口將提供一個虛擬/抽象的輸入/輸出接口給相應的網絡連接
2 : Intercept
如果有一個網絡連接正在使用,那麼Intercept
提供的組件或接口將可以攔截相應的網絡數據流中的數據
3 : BoundIP
指定使用IdTCPClient組件的計算機系統的IP地址,也就是說,其中是空白那麼什麼樣的計算機都可以使用,但如果指定的IP地址為239.126.12.2,那麼就只有IP地址為239.126.12.2的計算機可以使用它.
4 : BoundPort
網絡端口的概念,指定使用IdTCPClient組件的計算機系統網絡端口,也就是說,如果BoundPort中指定了以整數為端口的網絡端口,那麼通訊時就只能使用這個商品進行通訊
5 : Host
如果不是使用BoundIP中的地址起先通訊,那麼Host就是詣將要通訊的計算機系統的名稱或它的IP地址,可以是計算機名也可以是IP地址.
6 : Port
與BoundPort的概念是基本一樣的,只是它與HOst相配合來決定IdTCPClient組件要與哪一個計算機系統中的什麼樣的網絡通訊端口進行通訊
方法
IdTCPClient
主要使用
Write,WriteBuffer,WriteCardinal,WriteFile,WriteHeader,WriteInteger,WriteLn,WriteRFCReply,WriteRFCStrings,WriteSmallInt,WriteStream,WriteStrings.
通過它們
IdTCPClient
可以發送非常多的類型的數據到相應的服務端,而這些都是非常的簡單
如: Write的函數說明是:
procedure Write(Const Aout : String) ; Virtual;
它的目的很簡單,就是發送一個字符串到相應的服務端.其中Aout就是被發送的字符串.
而
WriteLn的函數說明是:
procedure WriteLn(Const Aout : String = ''); Virtual;
它的目的就是在Write的基礎上,在被發送的字符串後加入相應的回車控件符.
注意 : 雖然IdTCPClient可以直接使用,它不可以被單獨的使用,它必須與相應的IdTCPServer組件相配合才能發揮特定的作用,當然,如果相應的網絡系統中具有這樣的TCP服務器應用,那麼IdTCPClient也可以直接與它們進行通訊.
IdTCPServer
屬性
1 : Bindings
包括了相應的服務端所允許的所有的Socket(套接字)的相關信
息,比如它們的IP地址和端口號
2 : ListenQueue
是規定在服務端失效之前最多可以允許的監聽網絡連接的純種
數目.默認情況下它的值是15,但這個值可以根據自己的需要和系統的最大承受能力來
進行改變
3 : MaxConnects
它表示的內容就是服務端可以承載的最大的網絡連接數目,如果
它的值是0,那麼就表明它沒有最大的限制值,可以使用任意數目的連接.
4 : MaxConnectionReply
與MaxConnects相配合,當連接數目大
於MaxConnects的數目時,它將返回一個錯誤的信息,而這個信息是由TIdRFCReply
類所定義的
5 : ThreadMgr
就是使用相應的 ThreadMgr
組件來對於網絡連接線程進行管
------------------------------------------
IdTCPClient屬性
1 : IOHandler
如果有相應的輸入/輸出操作,那麼IOHandler相對應的組件或接口將提供一個虛擬/抽象的輸入/輸出接口給相應的網絡連接
2 : Intercept
如果有一個網絡連接正在使用,那麼Intercept
提供的組件或接口將可以攔截相應的網絡數據流中的數據
3 : BoundIP
指定使用IdTCPClient組件的計算機系統的IP地址,也就是說,其中是空白那麼什麼樣的計算機都可以使用,但如果指定的IP地址為239.126.12.2,那麼就只有IP地址為239.126.12.2的計算機可以使用它.
4 : BoundPort
網絡端口的概念,指定使用IdTCPClient組件的計算機系統網絡端口,也就是說,如果BoundPort中指定了以整數為端口的網絡端口,那麼通訊時就只能使用這個商品進行通訊
5 : Host
如果不是使用BoundIP中的地址起先通訊,那麼Host就是詣將要通訊的計算機系統的名稱或它的IP地址,可以是計算機名也可以是IP地址.
6 : Port
與BoundPort的概念是基本一樣的,只是它與HOst相配合來決定IdTCPClient組件要與哪一個計算機系統中的什麼樣的網絡通訊端口進行通訊
方法
IdTCPClient
主要使用
Write,WriteBuffer,WriteCardinal,WriteFile,WriteHeader,WriteInteger,WriteLn,WriteRFCReply,WriteRFCStrings,WriteSmallInt,WriteStream,WriteStrings.
通過它們
IdTCPClient
可以發送非常多的類型的數據到相應的服務端,而這些都是非常的簡單
如: Write的函數說明是:
procedure Write(Const Aout : String) ; Virtual;
它的目的很簡單,就是發送一個字符串到相應的服務端.其中Aout就是被發送的字符串.
而
WriteLn的函數說明是:
procedure WriteLn(Const Aout : String = ''); Virtual;
它的目的就是在Write的基礎上,在被發送的字符串後加入相應的回車控件符.
注意 : 雖然IdTCPClient可以直接使用,它不可以被單獨的使用,它必須與相應的IdTCPServer組件相配合才能發揮特定的作用,當然,如果相應的網絡系統中具有這樣的TCP服務器應用,那麼IdTCPClient也可以直接與它們進行通訊.
IdTCPServer
屬性
1 : Bindings
包括了相應的服務端所允許的所有的Socket(套接字)的相關信
息,比如它們的IP地址和端口號
2 : ListenQueue
是規定在服務端失效之前最多可以允許的監聽網絡連接的純種
數目.默認情況下它的值是15,但這個值可以根據自己的需要和系統的最大承受能力來
進行改變
3 : MaxConnects
它表示的內容就是服務端可以承載的最大的網絡連接數目,如果
它的值是0,那麼就表明它沒有最大的限制值,可以使用任意數目的連接.
4 : MaxConnectionReply
與MaxConnects相配合,當連接數目大
於MaxConnects的數目時,它將返回一個錯誤的信息,而這個信息是由TIdRFCReply
類所定義的
5 : ThreadMgr
就是使用相應的 ThreadMgr
組件來對於網絡連接線程進行管
理.