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

网友投稿 220 2023-08-02


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

本文实例讲述了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 cotHPSqaCPtym.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();

}

}

运行效果图如下:

接收:

发送:

希望本文所述对大家的javhttp://a程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java使用归并删除法删除二叉树中节点的方法
下一篇:Java枚举类用法实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~