[問題] Socket等待逾時與封包大小的問題
想向板上的大大們請益兩個問題
1. 要怎麼寫「等待接收封包時間是有限制」的程式碼呢?
也就是說,等待接收封包,過了一陣子沒收到封包後就不等了,
然後可以知道逾時沒收到封包,然後顯示訊息接續其他程式碼之類的?
(Socket/MulticastSocket 有哪些現成可用的 method 嗎?)
2. 有沒有辦法動態調整接收封包的大小呢?
因為我的接收封包,是用來接收字串的,每次都不固定大小,
我又用固定大小的陣列 (byte[1024]) 來存取,
輸出到螢幕的時候,後面會接一堆空白,
有什麼好辦法處理呢?甚至可以偵測實際收到的封包大小呢?
以下是用 MulticastSocket 與 DatagramPacket 接收封包
(應該與一般的 Socket 差不多)
MulticastSocket mSocket;
DatagramPacket pack;
byte data[] = new byte[1024];
try{
// 準備接收封包
pack = new DatagramPacket(data,data.length,group,port);
// 等待接收封包
mSocket.receive(packReceive);
// 輸出
String str = new String(data,"UTF8");
System.out.println(str);
}catch(Exception e){
System.out.println(e);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.133.18.7
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):