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

nect(Sender: TObject;Socket:TCustomWinSocket);
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 組件來對於網絡連接線程進行管

理.

arrow
arrow
    全站熱搜

    ckk007 發表在 痞客邦 留言(0) 人氣()