您的位置:首页 > 编程语言 > Java开发

(java)在两台已知Ip的电脑间,使用UDP协议进行通讯

2012-12-17 19:34 429 查看
发送的代码:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: