package?com.lzj.test8_4;
import?java.io.IOException;
import?java.net.DatagramPacket;
import?java.net.DatagramSocket;
import?java.net.InetAddress;
public?class?UdpServerThread?extends?Thread{
private?static?int?count?=?0;
private?DatagramSocket?socket;
public?UdpServerThread(DatagramSocket?socket)?{
this.socket?=?socket;
}
@Override
public?void?run()?{
while(true){
try?{
//接收來自客戶端傳來的消息
byte[]?bytes?=?new?byte[1024];
DatagramPacket?packet?=?new?DatagramPacket(bytes,0,bytes.length);
socket.receive(packet);
System.out.println(new?String(bytes));
//向客戶端發(fā)送消息
InetAddress?addr?=?packet.getAddress();
int?port?=?packet.getPort();
StringBuilder?sb?=?new?StringBuilder();
sb.append("服務(wù)器返回:");
sb.append(count++);
sb.append(new?String(bytes));
sb.append("呵呵");
byte[]?res?=?sb.toString().getBytes();
DatagramPacket?cpacket?=?new?DatagramPacket(res,res.length,addr,port);
socket.send(cpacket);
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
}
2016-08-04
因為這個里面的bytes是有固定長度的,是1024,而讀取時,讀的最多也是1024光一個bytes的字符串就站滿了,所以要修改,sb.append(new String(bytes).trim());這樣就好了