![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
|
主題工具 | 顯示模式 |
|
|
#1 |
|
長老會員
![]() ![]() |
表單累容如下:
語法:
object Form1: TForm1
Left = 267
Top = 273
Width = 226
Height = 237
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object SpeedButton1: TSpeedButton
Left = 8
Top = 88
Width = 81
Height = 22
Caption = '傳送'
Flat = True
OnClick = SpeedButton1Click
end
object SpeedButton2: TSpeedButton
Left = 8
Top = 120
Width = 81
Height = 25
Caption = '放棄'
Flat = True
OnClick = SpeedButton2Click
end
object SpeedButton3: TSpeedButton
Left = 8
Top = 168
Width = 81
Height = 25
Caption = '離開'
Flat = True
OnClick = SpeedButton3Click
end
object ToolBar1: TToolBar
Left = 0
Top = 0
Width = 218
Height = 29
ButtonHeight = 21
ButtonWidth = 31
Caption = 'ToolBar1'
Flat = True
ShowCaptions = True
TabOrder = 0
object ToolButton1: TToolButton
Left = 0
Top = 0
Caption = '連線'
DropdownMenu = PopupMenu1
ImageIndex = 0
end
end
object Edit1: TEdit
Left = 8
Top = 40
Width = 81
Height = 40
Font.Charset = CHINESEBIG5_CHARSET
Font.Color = clWindowText
Font.Height = -32
Font.Name = 'Fixedsys'
Font.Style = []
MaxLength = 4
ParentFont = False
TabOrder = 1
end
object Memo1: TMemo
Left = 96
Top = 40
Width = 113
Height = 153
TabOrder = 2
end
object ServerSocket1: TServerSocket
Active = False
Port = 1234
ServerType = stNonBlocking
OnClientConnect = ServerSocket1ClientConnect
OnClientDisconnect = ServerSocket1ClientDisconnect
OnClientRead = ServerSocket1ClientRead
Left = 40
Top = 104
end
object ClientSocket1: TClientSocket
Active = False
ClientType = ctNonBlocking
Port = 1234
OnConnect = ClientSocket1Connect
OnDisconnect = ClientSocket1Disconnect
OnRead = ClientSocket1Read
Left = 72
Top = 104
end
object PopupMenu1: TPopupMenu
Left = 104
Top = 104
object N1: TMenuItem
Caption = '等待連線'
OnClick = N1Click
end
object N2: TMenuItem
Caption = '加入連線'
OnClick = N2Click
end
end
end
TServerSocket是屬於主機端的物件,也就是他是等待連結 TClientSocket則是屬於用戶端的物件,就是主動連結主機 接著有另外一項重要屬性就是Port,據書面資料說Port值可以任意,但必須大於1024,而兩台相連的電腦,Port值一定要一樣 使用時,其中一端必須當作主機(就是使用TServerSocket),等待TClientSocket的訊息,另一台電腦則使用TClientSocket發出訊息給主機 首先讓使用者選擇是要當主機(使用TServerSocket等待他人加入)呢?還是要加入其中一台主機(使用TClientSocket) 至於連接時您可以選擇使用IP(Address)或是輸入對方電腦名稱(Host) 本程式是兩個都放入,然後由使用者選擇要當Server會Client 若是當Server(選擇等待連結)則直接將ServerSocket1的Active屬性設為true,就可以等候Client的訊息了 語法:
void __fastcall TForm1::N1Click(TObject *Sender)
{
ServerSocket1->Active=true;
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::N2Click(TObject *Sender)
{
String sh;
if(InputQuery("連線","輸入 電腦名稱: ",sh));
if(sh.Length()>0)
{
ClientSocket1->Host=sh;
ClientSocket1->Active=true;
}
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->RemoteHost+"上來!");
ToolButton1->Enabled=false;
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("連到"+Socket->RemoteHost);
ToolButton1->Enabled=false;
}
//---------------------------------------------------------------------------
在TServerSocket是以ServerSocket1->Socket->Connections[0]->SendText(Edit1->Text)方法傳送的 而TClientSocket則以ClientSocket1->Socket->SendText(Edit1->Text)傳送 所以傳送按鈕(SpeedButton1)的OnClick事件是: 語法:
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(ServerSocket1->Active)
ServerSocket1->Socket->Connections[0]->SendText(Edit1->Text);
else
ClientSocket1->Socket->SendText(Edit1->Text);
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if(ServerSocket1->Active)
ServerSocket1->Active=false;
else
ClientSocket1->Active=false;
ToolButton1->Enabled=true;
}
//---------------------------------------------------------------------------
TServerSocket的事件是OnClientDisconnect 語法:
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->RemoteHost+"離線");
ToolButton1->Enabled=true;
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::ClientSocket1Disconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->RemoteHost+"離線");
ToolButton1->Enabled=true;
}
//---------------------------------------------------------------------------
語法:
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
ServerSocket1->Close();
ClientSocket1->Close();
Close();
}
//---------------------------------------------------------------------------
<敬請指教> |
|
__________________ 地獄變現記 [人身得來不易,願大家能尊重生命--勿傷胎命][好淫者請好自為之吧--割鳥] 南泉禪師道: 「道不屬知,不屬不知。知是妄覺,不知是無記。若真達不疑之道,猶如太虛,廓然蕩豁,豈可強是非邪?」 德山宣鑒禪師: 「如果明白無事,則勿妄求,妄求而得,亦非得也。汝但無事於心,無心於事,則虛而靈,空而妙。若毛端許,言之本末者,皆為自欺。何故?毫氂繫念,三塗業因。瞥爾情生,萬劫羈鎖。聖名凡號,盡是虛聲。殊相劣形,皆是幻色。汝欲求之,得無累乎?」 |
|
|
|
送花文章: 5469,
|