public class Clinet {
public static void main(String[] args) {
DatagramSocket ds = null; //和Socket相当
FileOutputStream fout = null;
try {
ds = new DatagramSocket(8889); //自己的端口号
byte[] b = new byte[1024*39];
DatagramPacket p = new DatagramPacket(b,b.length); //将字节数组放到包里
ds.receive(p); //将接收的字节放到p包里
int l = p.getLength(); //接收发送者发送文件字节的长度
b = p.getData(); //得到p包里的字节放到数组里
fout = new FileOutputStream("e:/b.jpeg");
for(int i = 0;i<l;i++) {
fout.write(b[i]); //将数组里的字节写到文件中
}
fout.flush();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(fout!=null)
try {
fout.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
上面是接收图片的一方
public class Sever {
/*
* 点对点的发送
* 在网络中发送,如果对方没有接受则消息消失
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DatagramSocket ds = null;
FileInputStream fin = null;
try {
fin = new FileInputStream("e:/zhaopian/02.jpeg");
ds = new DatagramSocket(8888); //自己打端口
byte[] a = new byte[fin.available()]; //将文件变成字节读到字节数组里
fin.read(a);
//将字节数组存到包里
DatagramPacket p = new DatagramPacket(a, a.length,InetAddress.getByName("127.0.0.1"),8889);
//发送包
ds.send(p);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(fin !=null)
try {
fin.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
上面是发送图片的一方
这个是点对点发送,其他的IP不能访问
注意:先运行Clinet,是它保持接收消息状态。然后在运行Sever是其发送消息,被指定的ip接收。