java进行网络编程 Socket 发送和接受端

来源:互联网 发布:less 1.4.2.min.js 编辑:程序博客网 时间:2024/06/06 13:59

//创建发送端
 public static void internateSend(){
  
  DatagramSocket ds;
  try {
   ds = new DatagramSocket();
   //定义一个数据缓存
   byte [] buf = "this is a send port".getBytes();
   //定义封装数据包     dp   里面有四个参数  一个是数据缓存  一个数数据的大小   一个是接受端地址  一个是接收端的端口号
   DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.8"), 1000);
   //发送数据
   ds.send(dp);
   //关闭资源
   ds.close();
  } 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();
  }
 }

 

//创建接收端
 public static void internateRece(){
  //创建datasocket
  try {
   DatagramSocket ds = new DatagramSocket(10000);  //这里要和你的发送端关联 
   byte [] buf = new byte[1024];
   DatagramPacket dp = new DatagramPacket(buf, buf.length);
   //进行接受数据
   ds.receive(dp);
   
   String ip = dp.getAddress().getHostAddress();
   
   String data = new String(dp.getData(),0,dp.getLength());
   
   int port = dp.getPort();
   
   System.out.println("ip:" + ip + "     ,data:" + data + "     ,port:" + port);
   ds.close();
  } catch (SocketException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 

 

运行的时候先打开接收端  再发送  因为你没有打开接收端的时候会出现数据发送了  但是接收端没有收到    如果相关的饿端口占用了  关闭还是不行的话  是你的内存中对端口还没有释放资源!

原创粉丝点击