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

請問如何在一個副程式中呼叫Socket來送資料??

答題得分者是:gemi0305
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-23 17:32:20 IP:163.28.xxx.xxx 未訂閱
我是使用TServerSocket/Client,但看了BCB的help,好像如果Client或Server要送資料給對方時,一定要符合OnRead或OnWrite,所以好像得在Onread與OnWrite的Event下作傳送的動作,那如果有一個副程式單純只是要臨時送個資料給對方時,那要怎麼寫??
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-23 17:58:40 IP:210.66.xxx.xxx 未訂閱
以nonblocking為假設, 送資料是不用寫在OnWrite() 裡面的, 只要想送,隨時可以ClientSocket1->Socket->SendBuf()~ 不過收的話,就只能在OnRead中收,    個人小小的經驗 國泰平安 發表人 -
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-23 18:29:10 IP:163.28.xxx.xxx 未訂閱
請問一下版主,我如果Server端利用Socket->Receivebuf這個函式來收,可是Server端不知道Client端的資料有多大,那這樣要怎麼寫才會完整收到?? 因為Receivebuf必須要填收的buf
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-23 18:34:41 IP:210.66.xxx.xxx 未訂閱
用Socket->ReceiveLength();就可以知道我們Receive多少資料了, 給你一個範例: 在server的ClientRead事件中:  
     
     int buf_len=Socket->ReceiveLength();
     char *pData = new char[buf_len];
     memset(pData, 0, buf_len);
     Socket->ReceiveBuf(pData,buf_len);
         
pData就是我們收到的資料~ 國泰平安
willchen
初階會員


發表:64
回覆:81
積分:29
註冊:2003-05-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-23 18:40:39 IP:163.28.xxx.xxx 未訂閱
謝謝版主,小弟我這就去試,有問題再提出來
系統時間:2024-04-29 16:29:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!