[javaSE] 网络编程(UDP通信)

UDP发送端

获取DatagramSocket对象,new出来

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度,InetAddress对象,int端口

调用DatagramSocket对象的send()方法,发送出去,参数:DatagramPacket对象

调用DatagramSocket对象的close()方法,关闭资源

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 发送端
 * @author taoshihan
 *
 */
public class Sender {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds=new DatagramSocket();
        byte[] buf="Hello UDP".getBytes();
        DatagramPacket p=new DatagramPacket(buf, buf.length, InetAddress.getLocalHost(),10000);
        ds.send(p);
        ds.close();
    }
}

UDP接收端

获取DatagramSocket对象,new出来,构造参数:int端口号

获取DatagramPacket对象,new出来,构造参数:byte[]数组,int长度

调用DatagramSocket对象的receive()方法,接收数据,参数:DatagramPacket对象

调用DatagramPacket对象的getAddress()方法,获取到InetAdress对象

调用DatagramPacket对象的getData()方法,获取到byte[]字节数组,接收的数据

调用DatagramPacket对象的getLength()方法,获取到数据长度

通过new String()包一下,获得String数据,参数:byte[]数组,0开始,length长度

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
 * 接收端
 * @author taoshihan
 *
 */
public class Receiver {
    public static void main(String[] args) throws Exception {
        DatagramSocket ds=new DatagramSocket(10000);
        byte[] buf=new byte[1024];
        DatagramPacket datagramPacket=new DatagramPacket(buf, buf.length);
        ds.receive(datagramPacket);

        InetAddress ip= datagramPacket.getAddress();
        int port=datagramPacket.getPort();
        byte[] resByte=datagramPacket.getData();
        int length=datagramPacket.getLength();

        String info=new String(resByte,0,length);
        System.out.println("来自:"+ip.getHostAddress()+":"+port+"说:"+info);

    }
}

结果:

来自:100.66.217.80:56356说:Hello UDP

先运行接收端,此时程序会阻塞住,等待接收。。。

再运行发送端

接收到一次以后就会断,用while(true) 包一下,死循环但是会阻塞住,注意不要把创建DatagramSocket包进去

时间: 2024-12-17 17:59:05

[javaSE] 网络编程(UDP通信)的相关文章

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相对于

[javaSE] 网络编程TCP通信

EffectiveJava%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0%E2%80%94%E2%80%94%E5%A4%8D%E5%90%88%E4%BC%98%E5%85%88%E4%BA%8E%E7%BB%A7%E6%89%BF http://auto.315che.com/sbd203/qa23376156.htm?s1 ??????aWieJ9w2??μ??????? ?????EuQNEVmi??????????t http://auto.315che.co

网络编程:Http通信与Socket通信

http://note.youdao.com/share/?id=f14d304548003f65e34255d3ddf9df31&type=note 网络编程:Http通信与Socket通信(移动互联核心) 知识点概述: 1.Socket通信:面向连接(TCP)和无连接的(UDP) 2.HttpURLConnection 接口:Get和Post方式 3.HttpClient接口:Get和Post方式 知识点详述: 1 Socket通信 Socket称为”套接字“,用于描述IP地址和端口,它是支

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

网络编程UDP Demo

package 网络编程UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UDPClient { public static void main(String[] args) { DatagramSocket ds = null; try { // 创建客户端的

网络编程UDP Demo1

!!!这是循环打印的输入的内容,如果要循环输入的话,一定要记得切换线程来输入,要不不管用的 package 网络编程UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class UDPClient { public static void main(String[] arg

c/c++ 网络编程 UDP 发送端 bind 作用

网络编程 UDP 发送端 bind 作用 upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口. upd 发送端 调用bind函数的目的:假如有2个发送端,接收端需要识别是从哪个发送端过来的,就可以分别在发送端调用bind函数,这样一来,接收端就能够知道是哪个发送端过来的数据了. 运行方法:先运行[1,先接收再发送],再运行[2,先发送再接收] 1,先接收再发送: #include <stdio.h> #include <

c/c++ 网络编程 UDP 改变网卡的硬件地址

网络编程 UDP 改变网卡的硬件地址 在程序里动态改变网卡的硬件地址 1,取得网卡的硬件地址 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <

c/c++ 网络编程 UDP 改变网关和网卡名字

网络编程 UDP 改变网关和网卡名字 在程序里动态改变网关和网卡名字 1,改变网卡名字 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net

c/c++ 网络编程 UDP 改变IP地址

网络编程 UDP 改变IP地址 在程序里动态改变主机的IP地址 1,改变ipv4的地址 #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net