UDP传输
udp传输数据就好像在大海上运输货物,DatagramSocket就像的两个通信港口的码头,DatagramPacket就像在两端运输货物的轮船
发送端(send)
创建DatagramSocket,随机端口号
创建DatagramPacket,制定数据,长度,地址和端口
使用DatagramSocket发送DatagramPacket
关闭DatagramSocket
异常处理
package cn.bdqn.cm;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Demo12 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo12 d=new Demo12();
d.jieshou();
d.send();
}
public void send()
{
DatagramSocket ds=null;
try {
ds=new DatagramSocket();
byte [] b="ni hao wo shi fa song duan".getBytes();
//每个数据报不能大于64k
DatagramPacket pack = new DatagramPacket(b, 0, b.length,
InetAddress.getByName("127.0.0.1"), 9901);
ds.send(pack);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(ds!=null)
{
ds.close();
}
}
}
接收端(receive)
创建DatagramSocket,匹配端口号
创建DatagramPacket,创建接收数据和有效数据长度
接收socket
接收packet
关闭DatagramSocket
public void jieshou()
{
DatagramSocket ds=null;
try {
ds=new DatagramSocket(9901);
byte [] b=new byte[1024];
DatagramPacket pack = new DatagramPacket(b,0,b.length);
ds.receive(pack);
String str=new String(pack.getData(),0,pack.getLength());
System.out.println(str);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
if(ds!=null)
{
ds.close();
}
}
}
}