![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#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,
![]() |