這是檢視日誌時發現的問題,根據日誌,發現程式一直卡在乙個地方走不下去。最後發現,是因為設定的讀超時socket.setsotimeout方法沒有生效。而之所以讀超時方法沒有勝生效,又跟我從流中讀取資料的方法readbytesfromis方法有關。最後發現,當inputstream.read(bytes[ ])方法的引數,即byte陣列的長度為0時,並不會執行從流讀取資料的read方法。
筆記是一邊解決一邊做的記錄,由於有道雲筆記上貼很方便,於是記錄在有道雲筆記上,有需要的朋友可以看看:
這是程式中遇到的另乙個問題。
在程式中,我使用乙個map來儲存不同的socket物件,當發生socketexception如讀超時的時候,就要把相應的socket從map中移除掉。
這個map定義為hashmap型別,key用埠號標識,value儲存的是相應的socket物件。
在除錯的過程中,發現使用map.get()方法和map.remove()方法時,總是出現意料之外的結果。最後發現,問題出在get方法和remove方法的引數型別是object型別,我恰好我傳入的值是int型別的埠號,而我在使用put方法的時候,key傳的又是string型別的埠號。
因此導致,呼叫map的get方法的時候,獲取不到。呼叫map的remove方法之後,socket物件還是存在於map中。
剛開始覺得無法理解,但是由於類似的無法理解的事情遇多了,就知道肯定是因為自己某個地方粗心導致的,就不會把問題想得太複雜。靜下心分析一下,很快就找到的問題所在了。
工作筆記之ONVIF相關
環境準備 作業系統 ubuntu 10.04 desktop i386版本,新安裝,之前沒有安裝過任何程式。一 總體介紹 onvif是一套基於安防產品的標準,採用soap協議實現,soap是基於xml的簡易協議,可使應用程式在http之上進行資訊交換。soap提供了一種標準的方法,使得執行在不同的作...
工作筆記之sip相關
1 安裝osip4.1.0和exosip4.1.0 進入安裝目錄下,執行 configure make sudo make install 安裝成功後的檔案都放在 usr local lib下,所以需要指定一下,方便今後使用 export path path usr local lib sudo l...
GIt子模組 Git tag標籤 工作筆記
git submodule init 初始化你的本地配置檔案 git submodule update 更新子模組其他有關子模組的新增或者操作,以後再總結。當修改了子模組的內容時,需要提交到git上。跟主專案一樣的操作 步驟 先進入到子模組的專案檔案下,依次進行操作,git status,git a...