java网络之udp

import java.net.*;

/**
 * InetAddress用法
 * 获取本地主机名,ip
 * 通过主机名,ip获取InetAddress对象
 */
public class Demo{
    public static void main(String[] args) throws Exception {
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(localHost.toString());
        System.out.println(localHost.getHostAddress());
        System.out.println(localHost.getHostName());

        InetAddress thinkpad = InetAddress.getByName("reborn-PC");
        System.out.println(thinkpad.toString());
    }
}
import java.net.*;

/**
 * 简单udp发送接收
 */
class UdpSend {
    public static void main(String[] args) throws Exception {
        // 1,创建udp服务。通过DatagramSocket对象。DatagramSocket(int port)可以绑定本地端口
        DatagramSocket ds = new DatagramSocket();

        // 2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress
        // address, int port)

        byte[] buf = "udp ge men lai le ".getBytes();
        DatagramPacket dp = new DatagramPacket(buf, buf.length,
                InetAddress.getByName("127.0.0.1"), 10000);

        // 3,通过socket服务,将已有的数据包发送出去。通过send方法。
        ds.send(dp);

        // 4,关闭资源。

        ds.close();

    }
}
class UdpRece {
    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,通过数据包的方法获取其中的数据。  获取发送端端口
            String ip = dp.getAddress().getHostAddress();

            String data = new String(dp.getData(), 0, dp.getLength());

            int port = dp.getPort();

            System.out.println(ip + "::" + data + "::" + port);

        }
        // 5,关闭资源
        // ds.close();

    }
}
/*
udp多线程实现

编写一个聊天程序。
有收数据的部分,和发数据的部分。
这两部分需要同时执行。
那就需要用到多线程技术。
一个线程控制收,一个线程控制发。

因为收和发动作是不一致的,所以要定义两个run方法。
而且这两个方法要封装到不同的类中。

*/
import java.io.*;
import java.net.*;
class Send implements Runnable
{
    private DatagramSocket ds;
    public Send(DatagramSocket ds)
    {
        this.ds = ds;
    }

    public void run()
    {
        try
        {
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

            String line = null;

            while((line=bufr.readLine())!=null)
            {

                byte[] buf = line.getBytes();

                DatagramPacket dp =
                    new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10002);

                ds.send(dp);

                if("886".equals(line))
                    break;
            }
        }
        catch (Exception e)
        {
            throw new RuntimeException("发送端失败");
        }
    }
}

class Rece implements Runnable
{

    private DatagramSocket ds;
    public 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());

                if("886".equals(data))
                {
                    System.out.println(ip+"....离开聊天室");
                    break;
                }

                System.out.println(ip+":"+data);
            }
        }
        catch (Exception e)
        {
            throw new RuntimeException("接收端失败");
        }
    }
}

class  ChatDemo
{
    public static void main(String[] args) throws Exception
    {
        DatagramSocket sendSocket = new DatagramSocket();
        DatagramSocket receSocket = new DatagramSocket(10002);

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

    }
}
时间: 2025-01-05 12:54:02

java网络之udp的相关文章

JAVA网络编程UDP案例

Java网络编程.UDP案例 发送端 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 SendUDP { public static vo

JAVA网络编程--UDP通信

首先网络传输数据需了解例如以下三点 1.找到对方IP 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序用数字进行了标识.为了方便称呼这个数字,叫做port,逻辑port 3.  定义通信规则.这个通信规则称为协议. 国际组织定义了通用协议TCP/IP. 127.0.0.1本机回环地址 不易记忆,可用主机名 主机名:localhost 0-65535port范围 0-1024系统使用或保留port .当中mysql的port号为 3306 一.UDP UDP相对于

java 网络编程 UDP TCP

网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信....网页编程: 就是要基于html页面的基础上进行数据的交互的. 比如: 珍爱网. oa(办公自动化). 高考的报告系统... 计算机网络: 分布在不同地域 的计算机通过外部设备链接起来达到了消息互通.资源共享的效果就称作为一个计算机网络.网络通讯的三要素:    1. IP    2. 端口号.    3. 协

Java 网络编程 UDP协议

网络编程 TCP/IP协议:多台计算机网络连接的规则 包括:TCP协议.IP协议.UDP协议和其它协议的协议组 层次结构: 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤.网线提供的驱动.硬件方面的 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络. 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议. 应用层:主要负责应用程序的协议,例如HTTP协议.F

java 网络编程-UDP基本步骤

UDP:需要datagramSocket来进行中间的运输无连接的传输层协议,提供面向事务的简单不可靠信息传输服务.可能丢失.非常简单.开销小一切以包为中心数据传输不用IO流 接收端Address already in use: Cannot bind同一个协议下端口不允许冲突1.使用DatagramSocket指定端口 创建接收端2.准备容器封装成DatagramPacket 包裹3.阻塞式接受包裹receive(DatagramPacket p):4.分析数据getData()返回类型为字节数

java 网络编程-UDP图

原文地址:https://blog.51cto.com/14437184/2432470

java 网络编程-UDP基本类型传输(int、boolean、string)

接收端Address already in use: Cannot bind同一个协议下端口不允许冲突1.使用DatagramSocket指定端口 创建接收端2.准备容器封装成DatagramPacket 包裹3.阻塞式接受包裹receive(DatagramPacket p):4.分析数据,将字节数组还原为对应类型getData()返回类型为字节数组,getLength()返回数据长度,类型为int5.释放资源*/ public class http{ public static void m

java网络编程之UDP实例

package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b

黑马程序员——Java网络编程之UDP传输

网络编程 网络模型 通讯要素:InetAddress(对象):ip地址,网络中设备的标识,不可记忆,可用主机名,本地回环地址:127.0.0.1主机名localhost 端口号 传输协议:UDP,将数据的源及目的封装成数据包中,不需要建立连接,每个数据包的大小限制在64K内,无连接,是不可靠协议,不需要建立连接,速度快.力求速度,不求数据的准确性.比如聊天软件,网络会议. TCP:建立连接,形成传输数据的通道,在连接中进行大数据量传输,通过三次握手完成连接,是可靠协议,必须建立连接效率稍低. S