|
|
27 | 28 | 29 | 30 | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
E-mail:zbln426@163.com
QQ:85132383
長期尋找對戰略游戲感興趣的合作伙伴。
常用鏈接
留言簿(21)
隨筆分類
隨筆檔案
SDL相關網站
我的個人網頁
我的小游戲
資源下載
搜索
積分與排名
最新評論

閱讀排行榜
評論排行榜
摘要: 我們將UDP版的doEcho()也設計成返回bool:true表示循環繼續;false表示關閉客戶端。
閱讀全文
posted @
2010-06-12 12:11 lf426 閱讀(3710) |
評論 (2) |
編輯 收藏
摘要: 這里跟TCP有些細微的差別。在TCP中,recv()返回0表示連接正常斷開,而UDP中沒有連接和斷開的概念,recv()或者recvfrom()返回0表示收到一個0字節大小數據的數據報。另外,因為TCP是一對一連接的,所以一旦連接上,TCP服務器只能處理來自一個客戶端的echo請求(后面會講到多線程的使用,就可以讓TCP同時處理多個客戶端了);而UDP服務器則可以處理來自任何客戶端的echo請求,為了返回信息到正確的客戶端,我們的策略是,接收一個UDP數據包后,馬上刷新發送目標地址為上一次接收地址,然后再回發數據,所以這里每次多了一個重新指定發送目的地的函數。
閱讀全文
posted @
2010-06-12 11:16 lf426 閱讀(2486) |
評論 (2) |
編輯 收藏
摘要: 因為UDP是按數據包接收的,我們在接收之前并不知道這個數據包有多大。一個策略是,我們準備足夠大的應用程序緩存以免出錯,但是這個“足夠大”的概念是建立在我們對傳送的數據事先有了解的情況下,比如是我們自己設計服務器端和客戶端并且制定應用層協議;另外一種策略是,將一個數據包的相關信息記錄在數據包的前面的一些字節中,比如說大小,這樣,我們可以通過預讀數據包的前面一段,得到這個數據包的相關信息,比如說大小,然后再安排緩存。
閱讀全文
posted @
2010-06-11 13:30 lf426 閱讀(5407) |
評論 (1) |
編輯 收藏