請問透過Socket如何由Client送Command到Server端呢?? |
答題得分者是:RaynorPao
|
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問透過Socket如何由Client送Command到Server端呢??shing187 你好: (1)請問~~你想要傳送什麼樣的 command 呢?? ( > ( > < class="code"> // Client void __fastcall TClientForm::btnSendCommand(TObject *Sender) { ClientSocket1->Socket->SendText("MyCommand"); } // Server void __fastcall TServerForm::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { ShowMessage(Socket->ReceiveText()); } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/02/06 22:02:07
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
1.Client/Server有制定好的PACKET STRUCTURE
例如.Typedet struct PACKETTEST
{
DWORD command;
char test1[128];
char test2[128];
}PACKETTEST;
Client端傳送 command:0x00000011, test1:demo, test2:demo
Server端會回傳給Client端另一個struct的data給Client端
2.所以我想傳送的command應該是struct架構的東西
3.請問client該如何傳送給server與如何接收server傳送過來的struct 謝謝指教
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 1.Client/Server有制定好的PACKET STRUCTURE 例如.Typedet struct PACKETTEST { DWORD command; char test1[128]; char test2[128]; }PACKETTEST; Client端傳送 command:0x00000011, test1:demo, test2:demo Server端會回傳給Client端另一個struct的data給Client端 2.所以我想傳送的command應該是struct架構的東西 3.請問client該如何傳送給server與如何接收server傳送過來的structshing187 你好: 請參考以下的做法 < class="code"> // Server typedef struct _PACKETTEST { DWORD command; char test1[128]; char test2[128]; } PACKETTEST, *PPACKETTEST; void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { char szBuf[256]; PACKETTEST pt; Socket->ReceiveBuf(&pt, sizeof(PACKETTEST)); sprintf(szBuf, "command=%d\ntest1=%s\ntest2=%s", pt.command, pt.test1, pt.test2); ShowMessage(szBuf); } void __fastcall TForm1::FormCreate(TObject *Sender) { ServerSocket1->Port=4000; ServerSocket1->Open(); } void __fastcall TForm1::FormDestroy(TObject *Sender) { ServerSocket1->Close(); } // Client typedef struct _PACKETTEST { DWORD command; char test1[128]; char test2[128]; } PACKETTEST, *PPACKETTEST; void __fastcall TForm1::Button1Click(TObject *Sender) { PACKETTEST pt; pt.command=0x11; lstrcpy(pt.test1, "demo"); lstrcpy(pt.test2, "demo"); ClientSocket1->Socket->SendBuf(&pt, sizeof(PACKETTEST)); } void __fastcall TForm1::FormCreate(TObject *Sender) { ClientSocket1->Address="xxx.xxx.xx.xxx"; ClientSocket1->Port=4000; ClientSocket1->Open(); } void __fastcall TForm1::FormDestroy(TObject *Sender) { ClientSocket1->Close(); } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
RaynorPao你好....
謝謝你的範例...
我還有問題想請教 1.如果我依照下面這種方式宣告struct會出現錯誤訊息
typedef struct _PACKETTEST
{
DWORD command;
char test1[128];
char test2[128];
} PACKETTEST, *PPACKETTEST;
如果我依照上面這種方式宣告struct會出現錯誤訊息
如果不寫*PPACKETTEST則不會有問題 2.如果我沒有辦法知道server端程式的寫法,會不會有什麼問題??
有方法可以解決嗎??現在我能控制的只有client端而已...
請指教....
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好.... 謝謝你的範例... 我還有問題想請教 1.如果我依照下面這種方式宣告struct會出現錯誤訊息 typedef struct _PACKETTEST { DWORD command; char test1[128]; char test2[128]; } PACKETTEST, *PPACKETTEST; 如果我依照上面這種方式宣告struct會出現錯誤訊息 如果不寫*PPACKETTEST則不會有問題 2.如果我沒有辦法知道server端程式的寫法,會不會有什麼問題?? 有方法可以解決嗎??現在我能控制的只有client端而已... 請指教.... shing187 你好: (1)會錯誤?? 我的不會耶(Windows 2000 SP3, BCB 6.0 Update2) 基本上~~我所有發表過文章中的程式碼,都是先經過 > ( > > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
RaynorPao你好... (1)我的環境是(WIN XP SP1 and BCB5 SP1)
出現的錯誤訊息如下
1.宣告部分出現
[C Error] E2238 Multiple declaration for 'TForm1::PACKETTEST'
2.pt.command=0x11;等部份出現
[C Error] E2294 Structure required on left side of . or .*
這是因為環境產生的錯誤嗎??
(2)還有如果對方的工具不是BCB,會有什麼問題嗎?? 發表人 - shing187 於 2003/02/07 11:41:41
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好... (1)我的環境是(WIN XP SP1 and BCB5 SP1) 出現的錯誤訊息如下 1.宣告部分出現 [C Error] E2238 Multiple declaration for 'TForm1::PACKETTEST' 2.pt.command=0x11;等部份出現 [C Error] E2294 Structure required on left side of . or .* 這是因為環境產生的錯誤嗎?? (2)還有如果對方的工具不是BCB,會有什麼問題嗎?? shing187 你好: (1)把 struct 的宣告,放在你的 TForm1 class 的外面,例如: ........................ #include "ScktComp.hpp" typedef struct _PACKETTEST { DWORD command; char test1[128]; char test2[128]; } PACKETTEST, *PPACKETTEST; //--------------------------------------------------------------------------- class TForm1 : public TForm ........................... (2)基本上應該是不會有什麼問題的 >> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
shing187
一般會員 發表:45 回覆:63 積分:21 註冊:2003-01-15 發送簡訊給我 |
RaynorPao你好呀
把 struct 的宣告,放在你的 TForm1 class 的外面,
例如:........................
#include "ScktComp.hpp"
typedef struct _PACKETTEST
{
DWORD command;
char test1[128];
char test2[128];
} PACKETTEST, *PPACKETTEST; 我把宣告移出TForm1 class外面
還是出現一樣的錯誤訊息...
如果只有PACKETTEST 或是 *PACKETTEST
會有什麼問題嗎??
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: RaynorPao你好呀 把 struct 的宣告,放在你的 TForm1 class 的外面, 例如:........................ #include "ScktComp.hpp" typedef struct _PACKETTEST { DWORD command; char test1[128]; char test2[128]; } PACKETTEST, *PPACKETTEST; 我把宣告移出TForm1 class外面 還是出現一樣的錯誤訊息... 如果只有PACKETTEST 或是 *PACKETTEST 會有什麼問題嗎?? shing187 你好: (1)不好意思,你把我問倒了,實在不了解你的錯誤訊息?? ( >,因為其他的,你也暫時不 會用到 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |