UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。(无连接、封包、大小限制、速度快)。

一、UDP协议的特点:

  1. 将数据及源和目的地封装成数据包中,不需要建立连接。
  2. 每个数据报的大小限制在64K内
  3. 因无连接,是不可靠协议。
  4. 不需要建立连接,速度快。

二、通俗解释:

面向无连接的,你在与不在我都在发。就像邮局寄包裹,比如寄饼干。
,邮局会给你一个盒子和胶带,你将饼干封上(封包),将数据达成数据包,打完之后,贴张地址(天堂街)、门牌号(地狱门18号)(地址、端口),但地址可能不存在,那么则丢弃。

三、UDP举例:

  步话机、FEIQ、网络会议、录屏传播、聊天。

四、socket(套接字):

Socket就是为网络服务提供的一种机制。
通信的两端都有Socket。(插座,初期可简单理解为应用程序,而非网卡接口)
网络通信其实就是Socket通信。
数据在两个Socket间通过IO传输。

五、发送端:

需求:通过Udp传输的方式,将一段文字数据发送出去。
定义了一个udp的接收端。
思路:
1、建立udpSocket服务(找邮局)
2、提供数据,将数据封装到数据包中(封包、写地址)
3、通过socket服务发送功能,将数据包发送出去。(包裹上路)
4、关闭资源。

 class UdpSend
{
public static void main(String[] args) throws Exception
{
//1、创建udpSocket服务。通过DatagramSocket对象
DatagramSocket ds=new DatagramSocket(8888); //2、确定数据,并封装数据包
byte[] buf="udp I coming".getBytes(); /*
InetAddress addr=InetAddress.getLocalHost();
InetAddress addr = InetAddress.getByName(null);
InetAddress.getByName("localhost");
InetAddress.getByName("127.0.0.1");
*/
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.102"),10000); //3、通过socket服务,将已有的数据包发送出去,通过send方法
ds.send(dp); //4、关闭资源
ds.close();
}
}

发送端程序代码(class UdpSend )

 六、接收端:

需求:定义一个应用程序,用于接收udp协议传输的数据并处理
定义udp的接收端。
思路:
1、定义udpSocket服务。通常会监听一个端口。 其实就是给这个接收网络应用程序定义一个数字标识,
方便于明确哪些数据过来,该应用程序可以处理。
2、定义一个数据包。因为要存储接收到的字节数据。
数据包对象中有更多功能可以提取字节数据中的不同数据信息。
3、通过socket服务端额receive方法将收到的数据存入已定义的数据包中
4、通过手机开那片对象的特有功能,将这些不同数据取出打印在控制台上。
5、关闭资源

 class UdpReceive
{
public static void main(String[] agrs) throws Exception
{
//1、创建udpsocket,建立端点
DatagramSocket ds=new DatagramSocket(10000); //2、定义数据包,用于存储数据
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length); //3、通过receive方法将收到的数据存到数据包 中
ds.receive(dp);//阻塞式方法,线程机制,wait了 //通过数据包的方法获取其中的数据
String ip=dp.getAddress().getHostAddress();//获取发送端IP地址
String data=new String(dp.getData(),0,dp.getLength());//获取数据
int port=dp.getPort();//获取发送端端口 System.out.println(ip+"::"+data+"::"+port);//信息打印控制台 //5、关闭资源
ds.close();
}
}

接收端程序代码(class UdpReceive)

运行截图:

  

七、在接收者与发送者之间的改进

承接UdpDemo.java,实现只能一个人发,一个人收。
1、实现键盘录入:
2、实现连续输入(while)

 import java.net.*;
import java.io.*; class UdpSend2
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds=new DatagramSocket(); //实现键盘录入
BufferedReader bufr=
new BufferedReader(new InputStreamReader(System.in));
String line=null; while ((line=bufr.readLine())!=null)
{
if ("886".equals(line))
break;
byte[] buf=line.getBytes(); //IP地址,暂且用本机IP地址,也可用广播地址192.168.1.255
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.102"),10001); ds.send(dp);
}
ds.close();
}
} class UdpReceive2
{
public static void main(String[] agrs) throws Exception
{
DatagramSocket ds=new DatagramSocket(10001); byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length); while (true)
{
ds.receive(dp);//阻塞式方法,线程机制,wait了 String ip=dp.getAddress().getHostAddress();//获取发送端IP地址
String data=new String(dp.getData(),0,dp.getLength());//获取数据
int port=dp.getPort();//获取发送端端口 System.out.println(ip+"::"+data+"::"+port);//信息打印控制台
} //ds.close();服务器一般不关,也有种方法,while判断条件关
}
}

发送端+接收端Code

  运行截图:

通过套接字(socket)和UDP协议实现网络通信的更多相关文章

  1. day29 python 套接字socket TCP udp 形式发送信息的区别

    我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在 ...

  2. 网络编程 套接字socket TCP UDP

    网络编程与套接字 网络编程 网络编程是什么: ​ 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 ​ 编写基于网络的应用程序的过程序称之为网络编程. 网络编程最主要的工 ...

  3. 数据包式套接字:基于UDP协议的Socket网络编程

    步骤: 1.利用DatagramPacket封装数据包: 2.利用DatagramSocket发送数据包: 3.利用DatagramSocket接收数据包: 4.利用DatagramPacket处理数 ...

  4. 5-8套接字socket

    socket概念 socket层 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协 ...

  5. python 套接字Socket详解

    socket简介 1. 什么是socket ? socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是: 它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多 ...

  6. Socket(套接字) IP TCP UDP HTTP

    Socket(套接字) 阮老师的微博 (转)什么是套接字(Socket)? 应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进 ...

  7. 计算机网络之传输层(传输层提供的服务及功能概述、端口、套接字--Socket、无连接UDP和面向连接TCP服务)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105451022 学习课程:<2019王道考研计算机网络> 学习目的 ...

  8. 网络编程(二)--TCP协议、基于tcp协议的套接字socket

    一.TCP协议(Transmission Control Protocol 传输控制协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会 ...

  9. 网络编程(二)——TCP协议、基于tcp协议的套接字socket

    TCP协议与基于tcp协议的套接字socket 一.TCP协议(流式协议) 1.可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的 ...

  10. Linux进程间通信(八):流套接字 socket()、bind()、listen()、accept()、connect()、read()、write()、close()

    前面说到的进程间的通信,所通信的进程都是在同一台计算机上的,而使用socket进行通信的进程可以是同一台计算机的进程,也是可以是通过网络连接起来的不同计算机上的进程.通常我们使用socket进行网络编 ...

随机推荐

  1. 读jQuery源码之整体框架分析

    读一个开源框架,大家最想学到的就是设计的思想和实现的技巧.最近读jQuery源码,记下我对大师作品的理解和心得,跟大家分享,权当抛砖引玉. 先附上jQuery的代码结构. (function(){ / ...

  2. git个人使用总结(界面版)

    最近开始使用GIT来管理测试文档,从0到1开始使用git 1.首先,使用网页登录GIT后,创建项目 2.创建项目后,需要配置一下访问者权限 3.然后在网页版GIT复制地址,git clone到 本地 ...

  3. org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

    © 版权声明:本文为博主原创文章,转载请注明出处 1.问题描述 启动hibernate测试案例时报错如下: 2.解决方案: 2.1 第一次解决:MySQL驱动版本太高.使用的hibernate版本为5 ...

  4. rbg大神的主页

    http://www.rossgirshick.info/ Ross Girshick (rbg)Research ScientistFacebook AI Research (FAIR) r...@ ...

  5. spring 事件驱动模型简介

    事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): ...

  6. java中双向链表的增、删、查操作

    import java.util.NoSuchElementException; public class DoublyLinkedListImpl<E> { private Node h ...

  7. 在Linux中配置DNS的正确方式

    链接:http://ccl.cse.nd.edu/operations/condor/hostname.shtml Common Hostname Problem on Linux Newly ins ...

  8. phpexcel导入xlsx文件报错xlsx is not recognised as an OLE file 怎么办

    最初的做法  代码如下 1 include 'classes/PHPExcel/IOFactory.php'; 2 $inputFileName = $target; 3 $objReader = n ...

  9. 【Selenium + Python】之 Excel、CSV、XML文件读取数据并运用数据百度查询

    目录 从Excel读取数据进行百度搜索 从CSV读取数据进行百度搜索 从XML读取数据进行登录操作 附:其他学习资料(<xml.etree.ElementTree模块>.<pytho ...

  10. CrtmpServer支持Android与IOS进行RTMP直播遇到的_checkbw问题

    在进行移动端视频直播项目时遇到的问题.手机端在推的流时的是没问题的,主要如今是IOS和安卓连接CRtmpServer后进行播放时checkBW过不了,出现异常:NetConnection.Call.F ...