发送的代码:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class SendMessageUseUDP {
private DatagramSocket datasocket;
private DatagramPacket datapacket;
public void SendMessage(String message,String ip) throws Exception{
datasocket=new DatagramSocket(5000);//端口号
byte [] buf=message.getBytes("UTF-8");
datapacket=new DatagramPacket(buf,buf.length,InetAddress.getByName(ip),5000);
datasocket.send(datapacket);
}
public static void main(String [] args) throws Exception{
SendMessageUseUDP s=new SendMessageUseUDP();
s.SendMessage("航母Style", "192.168.0.118");
}
}
接收的代码:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveMessageUseUDP {
private DatagramSocket datasocket;
private DatagramPacket datapacket;
private int len=1024;
public void reviceMessage() throws SocketException{
datasocket=new DatagramSocket(5000);
while(true){
try{
byte [] buf=new byte[len];
datapacket=new DatagramPacket(buf,len,InetAddress.getByName("192.168.21.77"),5000);
datasocket.receive(datapacket);
byte [] bufer=datapacket.getData();
String message=new String(bufer,"UTF-8");
System.out.println(message);
}catch(Exception e){
continue;
}
}
}
public static void main(String [] args) throws SocketException{
ReceiveMessageUseUDP r=new ReceiveMessageUseUDP();
r.reviceMessage();
}
}
Java中对使用UDP协议进行传输的数据,使用DategramSocket和DatagramPacket两个类来进行处理。基本上来说并不难用,查看API进行简单的试验就可以搞定。写这篇文章的主要意义是推荐一篇我认为非常好的文章。因为在发送汉字的过程中,出现了乱码问题,尝试了去解决。对UTF-8和GBK以及ISO-8859-1进行了转换,结果都失败了。因此对字符编码产生了一点兴趣。额,于是强烈推荐以下这篇文章,对编码有兴趣的可以去看看,写的很清晰而易懂。
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html