線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1035
推到 Plurk!
推到 Facebook!

自己利用ClientSocket ServerSocket寫的程式 但結果出不來 幫看一下^^"

缺席
rik
一般會員


發表:40
回覆:81
積分:24
註冊:2004-09-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-18 16:38:10 IP:163.13.xxx.xxx 未訂閱
首先分為player端 和 server端 情形是 當玩家端按下確定後 server端沒反應 player端 程式 Unit1.cpp //------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" TMemoryStream *gmsFile=NULL; //------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { ClientSocket1->Address="163.XX.XXX.XX"; ClientSocket1->Port=4000; ClientSocket1->Open(); gmsFile=new TMemoryStream; } __fastcall TForm1::~TForm1() { if(gmsFile) delete gmsFile; ClientSocket1->Close(); } //------------------------------------------------------------------- void __fastcall TForm1::sendClick(TObject *Sender) { TMemoryStream *msFile=new TMemoryStream; MYPACK mp; //建立封包 mp.pbThisData[0]=0; mp.dwThisDataSize=10; msFile->Read(mp.pbThisData, mp.dwThisDataSize); ClientSocket1->Socket->SendBuf(&mp, sizeof(MYPACK)); Sleep(10); delete msFile; } //------------------------------------------------------------------- Unit.h //------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //------------------------------------------------------------------- #define MAX_STRLEN 16 #define MAX_DATASIZE 1024 //------------------------------------------------------------------- typedef struct _MyPack { char szHeader[MAX_STRLEN]; DWORD dwThisDataSize; BYTE pbThisData[MAX_DATASIZE]; } MYPACK; //------------------------------------------------------------------- server端程式 //------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" TMemoryStream *gmsFile=NULL; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" Tserver *server; //--------------------------------------------------------------------------- __fastcall Tserver::Tserver(TComponent* Owner) : TForm(Owner) { ServerSocket1->Port=4000; ServerSocket1->Open(); gmsFile=new TMemoryStream; } __fastcall Tserver::~Tserver() { if(gmsFile) delete gmsFile; ServerSocket1->Close(); } //------------------------------------------------------------------- void __fastcall Tserver::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { MYPACK mp; Socket->ReceiveBuf(&mp, sizeof(MYPACK)); AnsiString sz=(AnsiString)mp.szHeader; gmsFile->Write(mp.pbThisData, mp.dwThisDataSize); if(mp.pbThisData[0]==0){ getmessage->Text="good"; //此反應沒出現 } gmsFile->Clear(); }
------
時與不時的撿起身旁的拼圖碎片

不懂的部分 半解的部分 就像一塊拼圖
留於腦中 等待拼出完美解答的一天

這就是我的思路 我的創作方法
而我也接受 這作法所帶來的"代價" - 時間
Eminem
一般會員


發表:0
回覆:4
積分:0
註冊:2004-12-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-03 10:47:19 IP:210.5.xxx.xxx 未訂閱
原因可能如下: 1、由于传输的数据过大,可能一下子接受不到数据,下次接受时把之前的数据覆盖掉了。(解决方法:你试着改一下结构,传小点的数据判断一下) 2、如果用结构传数据的话,以后记得memset()一下,不然传数据的时候,有时会出错。 3、下次写程序的时候,最后不要用0来标示命令,用1以上的。
rik
一般會員


發表:40
回覆:81
積分:24
註冊:2004-09-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-03 18:12:01 IP:211.76.xxx.xxx 未訂閱
引言: 原因可能如下: 1、由于??的?据?大,可能一下子接受不到?据,下次接受?把之前的?据覆?掉了。(解?方法:你??改一下?构,?小?的?据判?一下) 2、如果用?构??据的?,以后?得memset()一下,不然??据的?候,有??出?。 3、下次?程序的?候,最后不要用0??示命令,用1以上的。
傳數字判斷前也有傳 字串判斷過 也不會動QQ" 還是試驗中><"
------
時與不時的撿起身旁的拼圖碎片

不懂的部分 半解的部分 就像一塊拼圖
留於腦中 等待拼出完美解答的一天

這就是我的思路 我的創作方法
而我也接受 這作法所帶來的"代價" - 時間
系統時間:2024-05-05 19:04:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!