[英]C# TCP Application deadlocks on one computer and never deadlocks on another
我不確定該如何處理。 我不願意顯示我的代碼,因為這是大學的任務。 我需要一些起點。
我正在制作一個有四個玩家和一個服務器的TCP卡游戲。 每隔100毫秒,播放器就會使用后台工作程序從服務器請求更新。 服務器接受客戶端連接,並讀取一個Enumeration值(以Int32形式發送),該值指示服務器希望服務器發送它的動作(更新,卡,播放器等),以及基於Enumeration值讀取的值(接收更新枚舉意味着接下來需要讀取Int32)。 服務器基於讀入的Enumeration發回響應。
這是發生問題的地方。 我有一台定制的計算機(2500K處理器,Win8 x64),當我在其上執行程序時,它將永遠循環,接受客戶端請求並將適當的響應發送回去。 完全符合預期! 但是,在我的筆記本電腦(Levono YogaPad,Win8 x64)上,來回交換持續約30-50個請求,然后出現死鎖。 它總是在同一地點。 服務器已讀入枚舉,正在等待第二個值。 客戶端已超出發送枚舉和值的部分,正在等待結果。 它在我的台式機上始終穩定,在筆記本電腦上始終死鎖。 我什至放慢了程序的速度以每秒更新一次,但它仍然死鎖。 我不確定該怎么辦。
我已經在每台計算機上構建了該程序。 我已經在台式機上構建了該程序,並在筆記本電腦上運行了該程序,但仍然陷入僵局。 有沒有人有什么建議?
非常感謝!
您很幸運,在您發送作業之前,該代碼已掛在一台計算機上,並且已掛在您的教師計算機上。 您也很幸運,該問題是可重現的,因此最好找出問題的根源。 在無法訪問代碼的情況下,我有以下瘋狂的猜測:
K<N
個字節 這些都是大膽的猜測,但是即使沒有訪問程序的基本結構,也可能無法期望更多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.