請教一個利用ServerSocket和ClientSocket設計協定的問題 |
尚未結案
|
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
各位先進好。
請教一個問題。
今天我用ClientSocket和ServerSocket設計協定。
一個交握式的協定。譬如我
Client--->Server要求傳檔
Server--->Client回復准許
Client--->Server傳檔
Server--->還傳檔案大小 請問我該怎麼讓Client或Server能夠接到對方回覆在繼續往下執行呢?
我目前是設計傳送完後都Sleep(100)等待接收。
可是這樣都抓不準時間會lose以致於產生當機。
請問ClientSocket和ServerSocket有可以類這樣的函示嗎。
While( )///Socket等待接收值
{
ClientSocket->Socket->ReceiveBuff(&Protocal,Sizeof(Protocal));
}
接收到........ 謝謝您耐心看完!祝平安。
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
1.不能用 sleep.
2.要使用狀態記錄。
比方說 server 接到傳檔。server 就要記錄目前狀態為接到傳檔。
等 Server 回覆准許後。狀態就要改為已送許可。
而 Client 開始送檔案時。Server 就可以由狀態知道已許可。就開始收。
當然你的順序有些問題。
檔案大小要先由 client ->server 才對。 通訊協定。我多次強調。就像兩個程式要利用檔案來做溝通。
A寫的B來讀。所以一定要讓兩方可以明確的知道目前要做什麼事。要怎麼做。
所以 client 要先跟 server 說。再來。你要接收多少 byte 的東西。
然後 server 接收了多少 byte 之後才再回來看 client 還有什麼命令。
所以。。。。。 你先把不 sleep 的動作幹掉。
再回來處理這些問題吧。
|
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
引言: 1.不能用 sleep. 2.要使用狀態記錄。 比方說 server 接到傳檔。server 就要記錄目前狀態為接到傳檔。 等 Server 回覆准許後。狀態就要改為已送許可。 而 Client 開始送檔案時。Server 就可以由狀態知道已許可。就開始收。 當然你的順序有些問題。 檔案大小要先由 client ->server 才對。 通訊協定。我多次強調。就像兩個程式要利用檔案來做溝通。 A寫的B來讀。所以一定要讓兩方可以明確的知道目前要做什麼事。要怎麼做。 所以 client 要先跟 server 說。再來。你要接收多少 byte 的東西。 然後 server 接收了多少 byte 之後才再回來看 client 還有什麼命令。 所以。。。。。 你先把不 sleep 的動作幹掉。 再回來處理這些問題吧。恩~我Client在要求傳檔的同時就會把欲傳送檔案的大小告知SERVER了。謝謝暗黑破壞神提供的狀態記錄方法。不過我目前沒有頭緒該怎麼作 可以請暗黑破壞神提供一個範例嗎?謝謝 |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
lu
高階會員 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
看完你的描述之後,心裡有一大問題產生
TCP是確定保證送達喔,你怎麼會有LOST勒.... 你要不要檢查一下你程式是不是寫錯了?
給你一個提示....若你是一次傳送100KB到SERVER去
那SERVER 端的 ReceiveBuff() 這個Function,一次最多只接收 4KB (應該是吧,SIZE有點忘了),超過4K的部分,你就再呼叫一次ReceiveBuff()就收到了
還有~~100KB不是一次傳到喔,可能只先傳送50K,剩下的晚點才會到(視網路情形而定) 建議你改用INDY來寫,會比較好寫喔 ^^ =========================
大家一起快樂寫程式
|
sue690226
一般會員 發表:23 回覆:15 積分:7 註冊:2004-07-24 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |