欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java基于socket服务实现UDP协议的方法

程序员文章站 2024-03-04 20:27:00
本文实例讲述了java基于socket服务实现udp协议的方法。分享给大家供大家参考。具体如下: 示例1: 接收类: package com.socket.d...

本文实例讲述了java基于socket服务实现udp协议的方法。分享给大家供大家参考。具体如下:

示例1:

接收类:

package com.socket.demo; 
import java.io.ioexception; 
import java.net.datagrampacket; 
import java.net.datagramsocket; 
public class udpreceivedemo { 
 public static void main(string[] args) throws ioexception{ 
  system.out.println("接收端启动…………"); 
 /* 
  2、建立udp的socket的服务,必须明确一个端口号 
  3、创建数据包,用于储存接收到的数据,方便用数据包对象的方法解析这些数据 
  4、使用datagramsocket的receive方法将接收到的数据存储到数据包中 
  5、通过数据包的方法解析数据包中的数据 
  5、关闭socket服务 
  */ 
  //udpsocket服务,使用datagramsocket对象 
  datagramsocket ds=new datagramsocket(10002); 
  //使用datagrampacket将数据封装到该对象中 
  byte[] buf=new byte[1024]; 
  datagrampacket dp=new datagrampacket(buf, buf.length); 
  //通过udp的socket服务将数据包发送出去,通过send方法 
  ds.receive(dp); 
  //通过数据包的方法解析数据包中的数据,比如,地址、端口、数据内容等 
  string ip=dp.getaddress().gethostaddress(); 
  //string name=dp.getaddress().gethostname(); 
  int port=dp.getport(); 
  string text=new string(dp.getdata(),0,dp.getlength()); 
  //system.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text); 
  system.out.println("-----"+ip+"----------"+port+"-----"+text); 
  //关闭资源 
  ds.close(); 
 } 
} 

发送类:

package com.socket.demo; 
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 udpsenddemo { 
 public static void main(string[] args) throws ioexception{ 
  system.out.println("发送端启动…………"); 
 /* 
  * 1、创建udp传输的发送端 
  2、建立udp的socket的服务 
  3、将要发送的数据封装到数据包中 
  4、通过udp的socket服务将数据包发送出去 
  5、关闭socket服务 
  */ 
  //udpsocket服务,使用datagramsocket对象 
  datagramsocket ds=new datagramsocket(8888);//监听端口 
  //将要发送的数据封装到数据包中 
  string str="udp传输演示,go"; 
  //使用datagrampacket将数据封装到该对象中 
  byte[] buf=str.getbytes(); 
  datagrampacket dp= 
    new datagrampacket(buf, buf.length,inetaddress.getbyname("192.168.1.100"),10002); 
  //通过udp的socket服务将数据包发送出去,通过send方法 
  ds.send(dp); 
  //关闭资源 
  ds.close(); 
 } 
} 

示例2:

接收类:

package com.socket.demo; 
import java.io.ioexception; 
import java.net.datagrampacket; 
import java.net.datagramsocket; 
public class udpreceivedemo2 { 
 public static void main(string[] args) throws ioexception{ 
  system.out.println("接收端启动…………"); 
 /* 
  2、建立udp的socket的服务,必须明确一个端口号 
  3、创建数据包,用于储存接收到的数据,方便用数据包对象的方法解析这些数据 
  4、使用datagramsocket的receive方法将接收到的数据存储到数据包中 
  5、通过数据包的方法解析数据包中的数据 
  5、关闭socket服务 
  */ 
  //udpsocket服务,使用datagramsocket对象 
  datagramsocket ds=new datagramsocket(10003); 
  while(true){ 
   //使用datagrampacket将数据封装到该对象中 
   byte[] buf=new byte[1024]; 
   datagrampacket dp=new datagrampacket(buf, buf.length); 
   //通过udp的socket服务将数据包发送出去,通过send方法 
   ds.receive(dp);//阻塞式的。 
   //通过数据包的方法解析数据包中的数据,比如,地址、端口、数据内容等 
   string ip=dp.getaddress().gethostaddress(); 
   //string name=dp.getaddress().gethostname(); 
   int port=dp.getport(); 
   string text=new string(dp.getdata(),0,dp.getlength()); 
   //system.out.println("-----"+ip+"-----"+name+"-----"+port+"-----"+text); 
   system.out.println("-----"+ip+"----------"+port+"-----"+text); 
  } 
  //关闭资源 
  //ds.close(); 
 } 
}

发送类:

package com.socket.demo; 
import java.io.bufferedreader; 
import java.io.ioexception; 
import java.io.inputstreamreader; 
import java.net.datagrampacket; 
import java.net.datagramsocket; 
import java.net.inetaddress; 
public class udpsenddemo2 { 
 public static void main(string[] args) throws ioexception{ 
  system.out.println("发送端启动…………"); 
 /* 
  * 1、创建udp传输的发送端 
  2、建立udp的socket的服务 
  3、将要发送的数据封装到数据包中 
  4、通过udp的socket服务将数据包发送出去 
  5、关闭socket服务 
  */ 
  //udpsocket服务,使用datagramsocket对象 
  datagramsocket ds=new datagramsocket(9999);//监听端口 
  //将要发送的数据封装到数据包中 
  //string str="udp传输演示,go"; 
  bufferedreader bufr=new bufferedreader(new inputstreamreader(system.in));//键盘输入 
  string line=null; 
  //使用datagrampacket将数据封装到该对象中 
  while((line=bufr.readline())!=null){ 
   byte[] buf=line.getbytes();// 
   datagrampacket dp= 
     new datagrampacket(buf, buf.length,inetaddress.getbyname("192.168.1.100"),10003); 
   //通过udp的socket服务将数据包发送出去,通过send方法 
   ds.send(dp); 
   if("886".equals(line)){ 
    break; 
   } 
  } 
  //关闭资源 
  ds.close(); 
 } 
}

运行效果图如下:

接收:

Java基于socket服务实现UDP协议的方法

发送:

Java基于socket服务实现UDP协议的方法

希望本文所述对大家的java程序设计有所帮助。