![]() |
|
|||||||
| 論壇說明 |
|
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() |
|
|
主題工具 | 顯示模式 |
|
|
#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,
|
|
|
#3 (permalink) |
|
長老會員
![]() ![]() |
語法:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
String num;
int n=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
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;
while(1){
InputQuery("輸入","輸入 您的數字(4位數): ",num);
for(int i=1;i<=num.Length()-1;i++)
for(int j=i+1;j<=num.Length();j++)
if(num.SubString(i,1)==num.SubString(j,1)) {
ShowMessage("數字不合,請重新輸入");
num="";
}
if(num.Length()==4) break;
}
Memo1->Lines->Add("您的數字是"+num);
Memo1->Lines->Add("您先猜");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("已連到"+Socket->RemoteHost);
ToolButton1->Enabled=false;
while(1){
InputQuery("輸入","輸入 您的數字(4位數): ",num);
for(int i=1;i<=num.Length()-1;i++)
for(int j=i+1;j<=num.Length();j++)
if(num.SubString(i,1)==num.SubString(j,1)) {
ShowMessage("數字不合,請重新輸入");
num="";
}
if(num.Length()==4) break;
}
Memo1->Lines->Add("您的數字是"+num);
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(ServerSocket1->Active)
ServerSocket1->Socket->Connections[0]->SendText(Edit1->Text);
else
ClientSocket1->Socket->SendText(Edit1->Text);
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int an=0,bn=0;
String s=Socket->ReceiveText();
if(n==1){
Memo1->Lines->Add(Socket->RemoteHost+" 猜: "+s);
for(int i=1;i<=4;i++){
if(s.SubString(i,1)==num.SubString(i,1)) an++;
for(int j=1;j<=4;j++)
if(s.SubString(i,1)==num.SubString(j,1)) if(i!=j)bn++;
}
if(an==4) {
ServerSocket1->Socket->Connections[0]->SendText("4A");
Memo1->Lines->Add(Socket->RemoteHost+" 猜對了...");
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}else{
ServerSocket1->Socket->Connections[0]->SendText(s+" => "+IntToStr(an)+"A"+IntToStr(bn)+"B");
Edit1->Text="";
Memo1->Lines->Add("換您猜... ");
SpeedButton1->Enabled=true;
Edit1->Enabled=true;
n=0;
}
}else{
Memo1->Lines->Add(s);
n=1;
if(s=="4A"){
Memo1->Lines->Add("您猜對了");
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
TCustomWinSocket *Socket)
{
int an=0,bn=0;
String s=Socket->ReceiveText();
if(n==0){
for(int i=1;i<=4;i++){
if(s.SubString(i,1)==num.SubString(i,1)) an++;
for(int j=1;j<=4;j++)
if(s.SubString(i,1)==num.SubString(j,1)) if(i!=j)bn++;
}
Memo1->Lines->Add(Socket->RemoteHost+" 猜: "+s);
if(an==4) {
ClientSocket1->Socket->SendText("4A");
Memo1->Lines->Add(Socket->RemoteHost+" 猜對了...");
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}else{
ClientSocket1->Socket->SendText(s+" => "+IntToStr(an)+"A"+IntToStr(bn)+"B");
Edit1->Text="";
Memo1->Lines->Add("換您猜... ");
SpeedButton1->Enabled=true;
Edit1->Enabled=true;
n=1;
}
}else{
Memo1->Lines->Add(s);
n=0;
if(s=="4A"){
Memo1->Lines->Add("您猜對了");
SpeedButton1->Enabled=false;
Edit1->Enabled=false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if(ServerSocket1->Active)
ServerSocket1->Active=false;
else
ClientSocket1->Active=false;
ToolButton1->Enabled=true;
}
//---------------------------------------------------------------------------
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();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
for(int i=1;i<Edit1->Text.Length();i++)
if(Edit1->Text.SubString(Edit1->Text.Length(),1)==Edit1->Text.SubString(i,1)){
Edit1->Text=Edit1->Text.Delete(Edit1->Text.Length(),1);
Edit1->SelStart=Edit1->Text.Length();
}
}
//---------------------------------------------------------------------------
|
|
|
送花文章: 5469,
|
|
|
#4 (permalink) |
|
長老會員
![]() ![]() |
語法:
object Form1: TForm1
Left = 267
Top = 273
Width = 233
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 = 225
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
OnChange = Edit1Change
end
object Memo1: TMemo
Left = 96
Top = 40
Width = 121
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
|
|
|
送花文章: 5469,
|