windows編程socket問題

來源:互聯網
上載者:User

標籤:c   使用   window   app   a   編程   

       今天調試了個MFC網路程式,被bug困擾了一天,終於在收工前解決了。

       大致是這樣的,我們需要用上位機遠端控制機器車前行。上位機上的MFC app的鍵盤按鍵響應如下:當按鍵按下時,系統會發送一個訊息給app,當按鍵抬起時,系統會發送另一個訊息給app。我們的項目是這樣使用鍵盤按鍵的,當按下“向上”的方向鍵時,上位機通過socket給工控機發送一個前行命令,當抬起“向上”的方向鍵時,上位機通過socket給工控機發送一個前行停止的命令。結果當我們快速的“按下又抬起”向上按鈕,機器人還在前進,需要再按下前進按鈕,方能繼續控制,這是一個相當嚴重的bug。起初,我們以為是windows的訊息響應機制有問題,不允許快速的按下又抬起按鍵,否則它可能會忽略抬起的訊息或者是把抬起的訊息當成按下的訊息處理了。後來發現,並不是這個問題,人的手按動速度再快絲毫不會影響windows的訊息處理,cpu的執行速度是飛快的。最後,才發現問題出在這裡,由於按下和抬起的訊息響應函數裡邊都有網路發送函數send(這兩個send屬於同一個socket)。而按下和抬起速度太快的話,這兩個send函數可能會出現問題或者會造成接收端的receive函數出問題,因此我們在“抬起”的訊息響應函數中send調用前,加了半秒的延時,解決了錯誤。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.