java 板


LINE

※ 引述《slalala (no car ,no girlfriend )》之銘言: : sktReader = new BufferedReader(new InputStreamReader(skt.getInputStream())); : String message; : StringBuffer sb = new StringBuffer(); : while((message = sktReader.readLine()) != null) { : sb.append(message); : } : //讀完了 可是沒辦法到這邊 DEBUG時 確定卡在迴圈 : System.out.println("到這邊阿 打我阿笨蛋!"); : 請問這是什麼回事? 之前寫text file 讀寫都沒碰過這樣的問題 : 剛剛嘗試用read的方式 讀出字元 : 也是一樣 無法判斷 讀出來的int是否為-1 : 是不是socket有一些特性我沒釐清qq? : 煩請板上的高手教化我一下orz 遇到問題「為什麼沒有 null 或 -1 出現」, 您該在 google 之前先查手冊, http://java.sun.com/j2se/1.4.2/docs/api/java/io/ BufferedReader.html#readLine%28%29 <% Returns: A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached %> http://java.sun.com/j2se/1.4.2/docs/api/java/io/ Reader.html#read%28char[],%20int,%20int%29 <% Returns: The number of characters read, or -1 if the end of the stream has been reached %> 手冊說明了, null 或 -1 出現的條件。 另外,您提到良葛格檔案讀寫的範例, 我試著找一下: http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/ BufferedReaderWriter.htm 他有提到: <% 下次這個程式示範了BufferedReader與BufferedWriter的使用, 您可以在文字模式下輸入字元,程式會將您輸入的文字儲存至指 定的檔案中,如果要結束程式,null的判斷則依平台而有所不同 ,在UNIX-Like平台下,使用Ctrl+d 字元作為讀取結束或檔案結 束,在 Windows之下,則是在使用者按下Enter鍵後,接著Ctrl+ z表示讀取結束或檔案結束 %> 因為範例使用的是 System.in 作為輸入來源, 它不是一般的檔案,不會讀完後遇上檔案結束的符號。 因此,您需要自己製造這樣的符號。 到目前為止,至少能規納一些注意到的事: 1. 沒有遇到串流的終點,所以不會有 null 或 -1 出現 2. 能否自己製造串流的終點呢? 事實上,當 client 結束連線的時候,您會遇到 null http://pastie.org/689598 (test sample) 所以,您可以透過在 client 端呼叫 close() 來產生 null。 大致探索完滿足 end of stream 的情況後, 您得回到您正在處理的問題: 1. 目前的方式滿足你的需要:client 應該要主動關閉。 2. 目前的方式不符您的需要:client 不應該主動關閉。 您的需要為 1. 時,那麼 client.close() 就完成了。 您的需要為 2. 時,那麼您就不該以下列式子做為終止條件: ((message = sktReader.readLine()) != null) 您應該由 client 送來的內容作為判斷, 可以參考前一篇版友回應的: http://stackoverflow.com/questions/1577719/ java-sockets-bufferedreader-and-readline-hang http://tinyurl.com/yckcfqu 文中之到,以 Http Client 為例, 您可以在 Request Header 加上 Connection: close。 要求 Server 端處理完畢後結束連線。 雖然您的情況是相反的(您寫Server),但方式是一致的 「約定一個作為處理結束的符號」 ========================================================= 今天怎麼突然多話了起來呢? 上一篇 Let Me Google For You 雖然有答案, 但是,弟覺得在 Google 找解答前, 我們有該先讀閱的手冊,亦有該先自我思考、歸納的材料 順便分享一下文章: 對自己好一些:談技術手冊閱讀 http://blog.linux.org.tw/~jserv/archives/002008.html --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.165.131
1F:推 AmosYang:期待 LMRTFMFY.com 的出現… XD 11/09 16:59
2F:推 godfat:我又笑了 XDDDD 是不是還要有 LMWTFCFY.com 11/09 17:12
3F:→ AmosYang:(叉題) 事實上 LMWTFCFY.com / LMDTFCFY.com 或許還蠻有 11/09 17:48
4F:→ AmosYang:(搞笑)潛力的; LMRTFMFY.com 在技術上一下想不到該怎麼作 11/09 17:50
5F:→ godfat:比方說把傳進去的文字用語音讀出來...XD 不知 D 是哪個字? 11/09 17:55
6F:推 slalala:非常感謝 這篇對我受益良多 11/09 18:44
7F:推 slalala:事實上我今天早上的解法也是約定一個終止符號ORZ 11/09 18:49
8F:→ AmosYang: 'D'ebug XD 11/10 00:32
9F:→ godfat:看來是我太久沒在板上debug了...XD一時只想到draw, display 11/10 00:56







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP