看板 java 關於我們 聯絡資訊
我寫一個測試的java程式 server部分code DataOutputStream out = new DataOutputStream(socket.getOutputStream()); String []hh = new String[100]; hh[0]="String1"; hh[1]="String2"; hh[2]="String3"; hh[3]="String4"; hh[4]="String5"; hh[5]="String6"; for(int i=0;i<=5;i++){ String outData = hh[i]; byte [] outByte = outData.getBytes(); out.write(outByte , 0 , outByte.length); out.flush(); System.out.println(outData); } client部分code DataInputStream in = new DataInputStream(socket.getInputStream()); for(int i=0;i<=5;i++){ byte[] inByte = new byte[1000]; in.read(inByte); String servermsg = new String(inByte , 0 , inByte.length); System.out.println("Message from server : "+i); System.out.println(servermsg); } 結果我很納悶因為他的執行結果跟我想的不太一樣 執行結果: Message from server : 0 String1 Message from server : 1 String2String3String4String5String6 但是我預想的結果是 Message from server : 0 String1 Message from server : 1 String2 Message from server : 2 String3 Message from server : 3 String4 Message from server : 4 String5 Message from server : 5 String6 請問這是怎樣的問題呢? 要如何修改才能得到我預想的結果呢? 先謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.37.243 ※ 編輯: wheredo 來自: 118.171.37.243 (09/11 21:55)
po500922:因為無法控制底層tcp分成幾個封包傳送,通常作法是會在字 09/11 22:28
po500922:串後加上\r\n當作一個字串的結束,在client端自行拆解 09/11 22:30
這樣client不就無法確認幾次可以收到? 這樣就無法用for loop去接收 那要如何接收呢?
darkk6:如果要傳這個 String[] 用 ObjectOutputStream 比較直接 09/11 23:08
darkk6:如果要傳字串, 推薦 PrintStream 和 Scanner 09/11 23:12
※ 編輯: wheredo 來自: 114.39.5.215 (09/11 23:53)
LaPass:推ObjectOutputStream,省了一堆麻煩..... 09/11 23:58