• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            項目中, 我們使用Unity3D做客戶端開發(fā). 自己擼了一套C#網(wǎng)絡(luò)庫, 隨著項目的推進(jìn), 問題來了:

            問題

            每次Unity3D編輯器打開時, 連接服務(wù)器都會有一定幾率失敗, 需要反復(fù)關(guān)閉再打開編輯器3~4次后, 才能正常接收到封包

            轉(zhuǎn)載請注明: 戰(zhàn)魂小筑http://m.shnenglu.com/sunicdavy

            探索

            我們的網(wǎng)絡(luò)庫基于C#的Begin/End系的異步Socket, 這種socket更接近C++的asio模型, 擼起來特爽.

            1. 根據(jù)經(jīng)驗, 這個詭異問題多半跟多線程有關(guān)系. 復(fù)查代碼, 無效.

            2. 找友人更換網(wǎng)絡(luò)庫, 換阻塞Socket實(shí)現(xiàn)和SocketAsyncEventArgs這種實(shí)現(xiàn)都試過, 仍然無法解決問題.

            3. 接下來還是對Begin/End系的網(wǎng)絡(luò)庫進(jìn)行日志追蹤. 發(fā)現(xiàn), 發(fā)送會總是成功, 連接成功和接收封包有一定幾率會斷掉

            我們并沒有單獨(dú)開線程來處理, 而是利用底層異步通知, 然后有線程安全隊列切換到主線程進(jìn)行投遞. 因此底層的線程正常性是整個問題的焦點(diǎn)

            由于一直無法找到原因, 這個問題擱置了

            轉(zhuǎn)載請注明: 戰(zhàn)魂小筑http://m.shnenglu.com/sunicdavy

            解決方案

            直到有一個偶然的機(jī)會, 取過同事代碼后. 突然發(fā)現(xiàn)第一次打開Unity3D編輯器可以直接登錄. 但之后又不行. 同事提醒, 會不會是優(yōu)先度問題.

            馬上打開Edit->Project Settings->Script Execution Orders. 提高了網(wǎng)絡(luò)組建優(yōu)先度

            image

            測試, 通過, 問題解決

            轉(zhuǎn)載請注明: 戰(zhàn)魂小筑http://m.shnenglu.com/sunicdavy

            總結(jié)

            轉(zhuǎn)載請注明: 戰(zhàn)魂小筑http://m.shnenglu.com/sunicdavy

            一直懷疑這個問題跟Mono版本過老有關(guān)系, 但由于5.2版本到年底才更新, 之前只能自己啃bug.

            在這個問題發(fā)生后解決前, 我們還有一個相關(guān)見聞: 我們將網(wǎng)絡(luò)部分比較穩(wěn)定的代碼拆分放到dll中, 通過Unity3D的機(jī)制進(jìn)行加載

            結(jié)果, 網(wǎng)絡(luò)無法初始化. 估計也是跟這個問題有關(guān)系

            總之, 有類似問題時, 可以試用腳本執(zhí)行順序大法進(jìn)行嘗試

            posted on 2015-07-06 16:11 戰(zhàn)魂小筑 閱讀(3680) 評論(8)  編輯 收藏 引用 所屬分類: 游戲開發(fā)技術(shù) 、Unity3D

            評論

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2015-07-10 11:08 qiyun
            開多線程無此問題  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2015-07-11 13:01 Ollydbg
            之前我測試這個問題 是因為UnityVS插件 去掉這個插件就沒這個問題了.  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2015-07-13 09:49 戰(zhàn)魂小筑
            @Ollydbg
            但總不能不用吧, 按你這么說, 確實(shí)也是這個道理, 打包出來的沒有這個問題  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2015-08-06 20:06 DRed
            原來是這個問題,我之前用異步的收發(fā)包函數(shù),會出現(xiàn)收不到包,或者發(fā)不出包的情況。查了很久都查不出原因,后來用開多線程的方式才解決了。。。  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2015-08-28 22:23 ilylia
            @戰(zhàn)魂小筑
            我們也發(fā)現(xiàn)是UnityVS,但是無法解決,后來沒管了……影響不大  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題[未登錄] 2015-08-29 08:32 Lucifer
            unity4.3,自己寫的網(wǎng)絡(luò)庫沒發(fā)現(xiàn)有這樣的問題,跑的很歡  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2016-05-10 11:08 主席
            Begin/End 這個你在IOS下測試過沒有,我的在IOS下收不到包。請問您有遇到過嗎  回復(fù)  更多評論
              

            # re: 一個詭異的Unity3D的網(wǎng)絡(luò)問題 2016-05-10 11:10 戰(zhàn)魂小筑
            @主席
            建議Recv不要用Begin/End系, 否則偶爾會發(fā)不出包. iOS和PC都會出此問題  回復(fù)  更多評論
              

            国产精品一区二区久久国产| 99久久精品日本一区二区免费| 精品久久人人做人人爽综合| 亚洲伊人久久成综合人影院 | 久久天天躁狠狠躁夜夜2020一| 亚洲性久久久影院| 狠狠色丁香久久婷婷综| 久久精品不卡| 久久精品国产99国产精偷| 性高朝久久久久久久久久| 97久久久精品综合88久久| 久久久久免费视频| 99精品伊人久久久大香线蕉| 久久精品综合网| 99久久99久久精品国产片| 久久婷婷激情综合色综合俺也去 | 国产农村妇女毛片精品久久| 亚洲AV日韩AV永久无码久久| 伊人久久综合热线大杳蕉下载| 久久久久精品国产亚洲AV无码| 99久久精品国产毛片| 国产亚洲色婷婷久久99精品| 2019久久久高清456| 久久精品这里只有精99品| 久久精品国产亚洲AV嫖农村妇女 | 波多野结衣AV无码久久一区| 久久久久国产| 久久精品中文字幕第23页| 久久精品国产99国产电影网| 久久国产精品成人片免费| 久久人人添人人爽添人人片牛牛| 色婷婷狠狠久久综合五月| 免费一级做a爰片久久毛片潮| 亚洲一本综合久久| 久久久久亚洲AV无码网站| 国内精品伊人久久久久av一坑| 77777亚洲午夜久久多喷| 久久青青草视频| 99久久做夜夜爱天天做精品| 无码专区久久综合久中文字幕 | 99精品久久精品|