代碼清單:
以下程序同時扮演了客戶端與服務端.
添加一個button,兩個Edit,一個ClientSocket,一個ServerSocket.
-------------------------------------------------------------------------------------------------------------------------------------------------------
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, System.Win.ScktComp,Winapi.WinSock,
Vcl.OleCtrls, SHDocVw, Vcl.StdCtrls;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Edit1: TEdit;
Button1: TButton;
ServerSocket1: TServerSocket;
Edit2: TEdit;
Button2: TButton;
procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
procedure TForm1.Button1Click(Sender: TObject); //OnClick事件
begin
ClientSocket1.Open; //打開ClientSocket,並連接服務端.
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;Socket: TCustomWinSocket); //OnConnect事件
begin
ClientSocket1.Socket.SendText(Edit1.Text); //把Edit1中的消息發送給服務端.
ShowMessage('成功連接.');
ClientSocket1.Close; //完成后關閉連接.
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;Socket: TCustomWinSocket); //OnClientRead事件
begin
Edit2.Text := Socket.ReceiveText; //服務端接收到由客戶端發來的消息,並且顯示在Edit2上.
end;
end.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
現在說說ClientSocket和ServerSocket的幾個重要屬性.
ClientSocket :
1. Active Boolean型屬性,為真時便是打開端口與服務器連接(等同於ClientSocket.Open),為假時就斷開與服務器的連接(等同於ClientSocket.Close).
2.Address String型屬性,你要連接的IP地址.
3.ClientType 連接方式, ctNonBlocking表示無阻斷方式.ctBlocking表示以阻斷方式連接.
4.Host String型屬性,你要連接的域名,如果Host與Address同時設置了,那么默認選擇Host的參數.
5.Prot 整型屬性, 你要使用的端口號,不能使用已經被占用的端口號.
6.SerVice String類型屬性,設置常用的端口號,例如http ftp 等等. 如果同時設置了Prot屬性,那么默認選擇Service的參數.
ServerSocket :
1. Active 等於ClientSocket的屬性意思.
2. Prot 等於ClientSocket的屬性意思.
3. ServerType 等於ClientSocket的屬性意思.
4. Prot 等於ClientSocket的屬性意思.
5. Service 等於ClientSocket的屬性意思.