JAVA的UDP协议交互信息

由于要做app的UDP协议交互,所以就特地学习了下,其实也就类似于java的server和socket,下面就写了个简单的demo

服务端:

package com.test1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

public class UpdServer {
    private byte[] buff = new byte[1024];
    private DatagramPacket dp;
    private DatagramSocket ds;
    private InetSocketAddress socketAddress;
    public UpdServer(String host, int port){
        socketAddress = new InetSocketAddress(host, port);
        try {
            ds = new DatagramSocket(socketAddress);
        } catch (SocketException e) {
            System.out.println("连接失败:" + e.getLocalizedMessage());
            e.printStackTrace();
        }
        System.out.println("服务器开启监听...");
    }

    private String receive(String host, int port) {
        String info = "";
        try{
            dp = new DatagramPacket(buff, 0, buff.length);
            ds.receive(dp);
            info = new String(dp.getData(), 0, dp.getLength());
        }catch (Exception e) {
            e.printStackTrace();
        }
        return info;
    }

    public static void main(String[] args) {
        String host = "127.0.0.1";
        int port = 8888;
        UpdServer server = new UpdServer(host, port);
        String info = server.receive(host, port);
        System.out.println(info);
        //发送信息到客服端
        server.send(new String("你好,骚年!"));
    }

    private void send(String string) {
        DatagramPacket dps = new DatagramPacket(buff, 0, buff.length, dp.getAddress(), dp.getPort());
        dps.setData(string.getBytes());
        try {
            ds.send(dps);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

客户端:

package com.test1;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class UpdClient {
    private byte[] buff = new byte[1024];
    private DatagramPacket dp;
    private DatagramSocket ds;
    public UpdClient(){
        try {
            ds = new DatagramSocket();
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        UpdClient updClient = new UpdClient();
        String host = "127.0.0.1";
        int port = 8888;
        updClient.send(host, port, new String("你好,少年!").getBytes());

        //接受
        String info = updClient.receive();
        System.out.println(info);
    }

    private String receive() {
        DatagramPacket dpr = new DatagramPacket(buff, buff.length);
        String info = "";
        try {
            ds.receive(dpr);
            info = new String(dpr.getData(), 0, dpr.getLength());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return info;
    }

    private void send(String host, int port, byte[] b) {
        try{
            dp = new DatagramPacket(buff, 0, buff.length, InetAddress.getByName(host), port);
            dp.setData(b);
            ds.send(dp);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-10 23:59:52

JAVA的UDP协议交互信息的相关文章

java使用UDP协议传输数据

UDP协议(User Datagram Protocol,用户数据报协议)不同于TCP协议,它是不可能靠的,但是它比TCP协议具有更快的传输速度,UDP发送的数据单元称为数据报,当网络传输UDP传输UDP数据报是无法保证数据能够到达目的地,也无法保证按发送的顺序到达目的地,也就是说先发送了"hello",再发送了"world",但接收方可能会先收到"world",再收到"hello",也有可能收不到数据,为什么呢?因为它是不可

Java中UDP协议的基本原理和简单用法

UDP协议是非面向连接的,相对于TCP协议效率较高,但是不安全.UDP协议类似发信息的过程,不管接收方是在线还是关机状态,都会把信息发送出去.但是如果接收方不处于接收信息的状态,发送出去的数据包就会丢失. convert()方法是用来转换字节数组和基本类型. /** * 创建基于udp协议的服务接受端 * @author wxisme * */ public class MyServer { public static void main(String[] args) throws IOExce

Java之UDP协议 发送与接收简单实现代码

SendDemo: package com.renhongwei.demo_01; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /* * UDP数据发送端 */

java实现UDP协议传输DatagramSocket

摘自:http://blog.csdn.net/wintys/article/details/3525643/ Server端. package com.topca.server; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPServer { public static

udp协议基础(转自疯狂java讲义)

第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发送.接收数据报的对象.Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送.接收的数据报. 17.4.1  UDP协议基础 UDP协议是英文User Datagram Protocol的缩写,即用户数据报

java基础知识回顾之java Socket学习(一)--UDP协议编程

UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地.不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点.就像寄信,写好信放到邮箱桶里面,既不能保证信件在邮递过程中不丢失,也不能保证信件是按顺序寄到目的地的. 看java API用到java.net.DatagramSocket和java.net.DatagramPacket类: DatagramSocket:此类表示用来发送和接收数据报包的套接字(IP地址和

JAVA基础知识之网络编程——-基于UDP协议的通信例子

UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, 1 package udp; 2 3 import java.io.IOException; 4 import java.net.Dat

Java中的UDP协议编程

一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的. 二. 使用UDP的原因 它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频.视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包, 也不会对接收结果产生太大影响.比如我们聊天用的ICQ和O

Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接收数据:       • 创建接收端的Socket对象      • 创建数据包,接收数据(接收容器)      • 调用Socket对象的接收方法,接收数据包      • 解析数据包,并显示在控制台      • 释放资源 2. 代码实现 (1)首先我们先写发送端的程序,如下: 1 packag