Java UDP通信示例
2017-03-02 16:37
225 查看
本文主要是讲解Java udp的使用,话不多说直接上代码!
我这里主要是定义了两个类,一个类就叫”UDP”(名字有点古怪,凑合看吧^_^),也就是上面这代码。这个类是用来发送的UDP数据(DatagramePacket)的。
接下来就是用来接收数据的类了
我给它起了一个好听的名字:”harry”,这个类里面就是用到了DatagramSocket 对象ds的receive()方法,这个方法就是用来接收发来的数据的。
不管是发的类还是接收的类,为了让他们能够一直发送或者一直接收,我就将他们的核心代码都放在了while(true){}中了。
说一个小插曲,之前把
package Main; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; public class Udp { private static DatagramSocket ds = null; static String send; static String address = "192.168.0.121"; static DatagramPacket dp; static Scanner sc; public static void send(String s) { try { dp = new DatagramPacket(s.getBytes(), 0, s.getBytes().length); dp.setAddress(InetAddress.getByName(address)); dp.setPort(10000); } catch (UnknownHostException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { ds.send(dp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { init(); while (true) { send = sc.next(); send(send); } } private static void init() { // TODO Auto-generated method stub sc = new Scanner(System.in); try { ds = new DatagramSocket(8999); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
我这里主要是定义了两个类,一个类就叫”UDP”(名字有点古怪,凑合看吧^_^),也就是上面这代码。这个类是用来发送的UDP数据(DatagramePacket)的。
接下来就是用来接收数据的类了
package UDP; import java.io.IOException; import java.lang.ref.PhantomReference; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Harry { private static byte[] bytes=null; static DatagramPacket packet=null; static DatagramSocket ds=null; private static String show=""; public static void receive(){ try { ds=new DatagramSocket(10000); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } while (true) { re(); System.out.println(show); } } public static void main(String[] args) { receive(); } public static void re(){ bytes=new byte[1024]; packet=new DatagramPacket(bytes, 0,bytes.length); try { ds.receive(packet); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } show=new String(packet.getData(),0,packet.getData().length); } }
我给它起了一个好听的名字:”harry”,这个类里面就是用到了DatagramSocket 对象ds的receive()方法,这个方法就是用来接收发来的数据的。
不管是发的类还是接收的类,为了让他们能够一直发送或者一直接收,我就将他们的核心代码都放在了while(true){}中了。
说一个小插曲,之前把
bytes=new byte[1024];这句放在了while(true){}代码段之前,结果接收到的数据总是含有上一段接收的数据的”残留“,比如上一次发的”hhhh“,第二次发”ha“,显示出来是”hahh“,这主要是因为byte数组没有清空,然后导致后面的连个”h“的内容还是保留着的,修改之后结果让人满意。还是设计的时候自己考虑不周啊。
相关文章推荐
- java编写TCP&&UDP方式的通信程序
- Java 中ServerSocket与Socket 通信的简单示例
- java中使用nio包实现非阻塞的UDP通信
- Java的UDP通信
- Java中网络通信编程之UDP通信
- 用java编写简单UDP网络通信程序
- 黑马程序员_Java学习日记第八天--TCP/UDP通信、正则表达式
- java例程练习(网络编程[简单UDP通信试验])
- Java UDP通信(DatagramPacket类、DatagramSocket类、InetAddress类)
- java的UDP进行通信的一个小案例
- Java UDP 网络编程 示例 -Java学习笔记(30)
- JAVA 多线程实现聊天(UDP通信 )
- 对初学java通信很好的一篇文章:TCP/IP协议与UDP协议的区别和认识
- Java学习之路7——UDP通信
- java 利用UDP协议 通信
- 用java编写简单UDP网络通信程序
- java socket编程——UDP通信
- java学习之路——基于UDP的Socket网络通信实例
- java例程练习(网络编程[简单UDP通信试验])
- 一个简单的JAVA网络通信 UDP 单工方式