全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1112
推到 Plurk!
推到 Facebook!

TClientSocket & TServerSocket

答題得分者是:mieng
shyhshiunli
一般會員


發表:2
回覆:1
積分:0
註冊:2003-12-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-08 23:25:08 IP:61.230.xxx.xxx 未訂閱
我用TClientSocket & TServerSocket寫了個程式 一為server,另一為client 如果在兩台電腦上,一台執行server,一台執行client的話 可以正常的傳遞訊息 但是如果我在執行client的那台電腦上執行兩個client的程式的話 則第二個執行的client的程式卻沒辦法正確的傳遞訊息 希望有人可以幫我解決,謝謝 以下為server和client的程式碼    -----server #include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (Form1->Edit1->Text=="") { MessageBeep(MB_ICONWARNING); MessageBox(NULL,"Port 尚未輸入!!","警告",MB_ICONWARNING); } else { Form1->ServerSocket1->Port=StrToInt(Form1->Edit1->Text); Form1->ServerSocket1->Active=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Form1->Memo1->Lines->Text= "[" TimeToStr(Now()) "]" "[" Socket->RemoteAddress "]" "[" Socket->RemotePort "]" ":" "\n" Form1->ServerSocket1->Socket->Connections[0]->ReceiveText(); } //--------------------------------------------------------------------------- void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender, TCustomWinSocket *Socket) { Form1->Edit2->Text="連接中"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->ServerSocket1->Close(); Form1->Edit2->Text="斷線"; } //-------------------------------------------------------------------- -----client #include #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (Form1->Edit1->Text==""||Form1->Edit2->Text=="") { MessageBeep(MB_ICONWARNING); MessageBox(NULL,"Server IP and Server Port 尚未輸入完整!!","警告",MB_ICONWARNING); } else { Form1->ClientSocket1->Host=Form1->Edit1->Text; Form1->ClientSocket1->Port=StrToInt(Edit2->Text); Form1->ClientSocket1->Active=true; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { Form1->ClientSocket1->Socket->Close(); Form1->ClientSocket1->Active=false; Form1->Edit1->Text=""; Form1->Edit2->Text=""; Form1->Edit3->Text="斷線"; } //--------------------------------------------------------------------------- void __fastcall TForm1::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket) { Form1->Edit3->Text="連接中"; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Form1->ClientSocket1->Socket->SendText(Form1->Memo1->Lines->Text); Form1->Memo1->Lines->Text=""; Form1->Edit4->Text=Form1->ClientSocket1->Socket->LocalPort; } //---------------------------------------------------------------------------
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-09 00:24:27 IP:61.221.xxx.xxx 未訂閱
會有問題是正常的,因為您的server永遠都只回傳到第一個連線的client
Form1->ServerSocket1->Socket->Connections[0]->ReceiveText();
Connections記錄著連線ip,如果要正常的回傳,則要改變這裡的數值 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
shyhshiunli
一般會員


發表:2
回覆:1
積分:0
註冊:2003-12-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-09 00:31:04 IP:61.230.xxx.xxx 未訂閱
因為是從同一台電腦執行兩個client的程式 ip都是一樣的 那要怎麼判斷呢 @_@a -- 謝謝你的回應
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-09 00:37:20 IP:61.221.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?topic_id=40060 請參考以上連結中的範例 PS:發問前可以先找找舊文章呦 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
系統時間:2024-05-03 18:20:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!