java中UDP传输协议

package pack;
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 Demo {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //method1();

    }

    public static void method1() throws Exception {
        InetAddress i = InetAddress.getLocalHost();
        System.out.println(i.toString());

        InetAddress ia = InetAddress.getByName("www.baidu.com");
        System.out.println(ia.getHostAddress());

    }
}
发送接收数据
class UdpSend {
    public static void main(String[] args) throws Exception {

        //1.创建udp服务,通过DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();
        //2.确定数据,封装成包
        byte[] buf = "udp send".getBytes();
        DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.2"),10000);
        //3.通过socket服务,将已有的数据包发送出去
        ds.send(dp);
        ds.close();

    }
}

class UdpReceive {
    public static void main(String[] args) throws Exception {
        //1.创建udp socket,建立端点,指定端口
        DatagramSocket ds = new DatagramSocket(10000);
        while(true) {
            //2.定义数据包,用于存储数据
            byte[] buf = new byte[1024];
            DatagramPacket dp = new DatagramPacket(buf,buf.length);
            //3.通过服务的receive接收数据
            ds.receive(dp);
            //4.通过数据包对象获取ip地址与数据
            String ip = dp.getAddress().getHostAddress();
            String data = new String(dp.getData(),0,dp.getLength());
            int port = dp.getPort();
            System.out.println(ip+":"+data+":"+port);
            ds.close();
        }
    }
}

 键盘录入发送数据
class UdpSend2 {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket();
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
        String line = bufr.readLine();
        while(line!=null) {
            if("over".equals(line)) {
                break;
            }
            byte[] buf = line.getBytes();
            DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.10"),10001);
            ds.send(dp);
        }

    }
}

class UdpRece2 {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds = new DatagramSocket(100001);
        while(true) {
            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());
            System.out.println(ip+":"+data);
        }
    }
}
*/

/*聊天程序*/
public class Demo {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        DatagramSocket sendSocket = new DatagramSocket();
        DatagramSocket receSocket = new DatagramSocket(10001);

        new Thread(new Send(sendSocket)).start();
        new Thread(new Rece(receSocket)).start();

    }

}

class Send implements Runnable {
    private DatagramSocket ds;
    Send(DatagramSocket ds) {
        this.ds = ds;
    }

    public void run() {
        try {
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
            String line = bufr.readLine();
            while(line!=null) {
                if("over".equals(line))
                    break;
            byte[] buf = line.getBytes();
            DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.10"),10001);
            ds.send(dp);
            }
        }
        catch(Exception e) {
            System.out.println("error");
        }

    }

}

class Rece implements Runnable {
    private DatagramSocket ds;
    Rece(DatagramSocket ds) {
        this.ds = ds;
    }

    public void run() {
        try {
            while(true) {
            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());
            System.out.println(ip+":"+data);
            }
        }
        catch(Exception e) {
            System.out.println("error");
        }

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 21:33:06

java中UDP传输协议的相关文章

java中TCP传输协议

class TcpClient { public static void main(String[] args) throws Exception { //创建客户端的socket服务,指定目的主机和端口 Socket s = new Socket("192.168.1.10",10003); //为了发送数据,获取socket流中的输出流 java.io.OutputStream out = s.getOutputStream(); out.write("hello tcp

Java 中UDP原理机制及实现方式介绍(建议阅读者阅读前了解下Java的基础知识,一方便理解)

1.基本概念介绍: 首先得简单介绍下UDP. UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.它是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的 但是这种协议却是方便快捷的,因此很多通信工具和游戏仍然采用这种通信方式,虽然有时会出现数据丢帧

Java中基于HTTP协议网络编程

java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来訪问Web服务功能,这篇博客,就跟大家分享一下.Java中的网络编程的知识.主要是学习下该java.net包下的API. URI-->URL URI:表示的是统一的资源标识,它是以某种统一的方式标识资源的简单字符串. 这样的字符串以scheme开头. URL:表示统一的资源定位器的任务,URL是一种URI. URN:一般不能为资源提供持久不变的名称.这是统一的资源命名的任务.URN也是一种URI,但它是全球唯一的.持久不

【java】TCP和UDP传输协议

TCP协议和UDP协议的比较 TCP的全称是Transmission Control Protocol (传输控制协议) 传输控制协议,是一种面向连接的协议,类似打电话 在通信的整个过程中保持连接 保证了数据传递的可靠性和有序性 是一种全双工的字节流通信方式 服务器压力比较大,资源消耗比较快,发送数据效率比较低 UDP是User Datagram Protocol(用户数据报协议) 用户数据报协议,是一种非面向连接的协议,类似写信 在通信的整个过程中不需要保持连接 不保证数据传输的可靠性和有序性

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

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

Java 使用UDP传输一个小文本文件

工具1:Eclipse 工具2:IntelliJ IDEA Java工程的目录结构(基于IntelliJ IDEA) 例1.1:接收方,因为接收到的数据是字节流,为了方便,这里是基于Apache commons IO,将字节流读到一个文本文档中. 1 import org.apache.commons.io.FileUtils; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.net.DatagramPac

JAVA中TCP和UDP传输例子的对比

在本文中我将学到的java中的UDP和TCP在局域网内的传输做了对比,这里强调 的是局域网范围内,非广域网.首先,下面的是我写的在局域网内利用java中的UDP协议写的一个传输文件或者图片的类. --------------------------------------------------------------------------------------------------------------------------------------------------------

Python中的端口协议之基于UDP协议的通信传输

UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) ------------------------------------------------------------------------------------------------------------------------------------- 一.UDP协议:OSI七层协议中的传输协议的一种(另外一种tcp协议),他们都是一种端口协议 与TCP协

Java中的基于Tcp协议的网络编程

一:网络通信的三要素? IP地址     端口号     通信协议 IP地址:是网络中设备的通信地址.由于IP地址不易记忆,故可以使用主机名.本地环回地址,127.0.0.1   本地主机名localhost 端口号:发送端准备的数据要发送到指定的目的应用程序上,为了标识这些应用程序,所以用网络数字来标识这些不同的应用程序,这些数 字称为端口号.端口号是不同进程之间的标识.一般来说,有0~65535的端口可供使用,但是1~1024系统使用,或者称作保留端口. 通信协议:指定义的通信规则,这个规则