看板 java 關於我們 聯絡資訊
寫網路連線時,遇到一個狀況,是像這樣: byte[] b=new byte[1024]; DatagramSocket socket=new DatagramSocket(9000); DatagramPacket packet=new DatagramPacket(b, 1024); socket.receive(packet); System.out.println("訊息("+new String(packet.getData())+")"); 這裡出現的內容會是 訊息(HELLO! 這是測試訊息 )  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ↑ 這裡會出現一大堆空白 除了把結尾的空白replace掉之外 請問有辦法解決空白的問題嗎? (例如找字串結尾的識別標誌) 這樣看起來很醜,而起且沒辦法知道對方是傳空白過來,或是根本沒傳 題外話,之前在跟中華電信的簡訊API做銜接時 也看到取得的訊息後有一大串空白 現在想起來..... 應該也是同樣的狀況 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.16.65
qrtt1:空白是 byte[] initial 時就有的,重點是你要指定存值的長度 10/17 10:41
Lordaeron:byte array 預設是 0 吧. 10/17 10:46
AtarashiAko:既然是String的話,用trim()如何?不過對方是否傳空白 10/17 10:58
AtarashiAko:就得在trim()前行判斷了 10/17 10:59
LaPass:發送的時候是用 byte[] b="字串".getBytes(); 10/17 11:01
LaPass:然後包成packet時用 b,b.length 這樣 10/17 11:03
qrtt1:packet 有 getLength() 方法,我想應該是問它唄 10/17 11:04
LaPass:沒辦法的話..... 就只能用trim()了.... 10/17 11:04
LaPass:謝謝 我試試看 10/17 11:06
LaPass:成功 new String(packet.getData(),0,packet.getLength()) 10/17 11:12
gameking:感覺上面那一長串好像出現了表情符號XDD 10/19 00:28