1、传输层有两个协议,一个是tcp协议,另一个是udp协议,tcp协议通过socket编程。udp通过数据报编程。

UDP协议:

(1)将数据、源地址、目的地址 封装成数据包,不需要建立链接

(2)每个数据包限制在64K以内

(3)不可靠

(4)无需释放资源,速度快

2、(1)类DatagramSocket和DatagramPacket可实现udp编程

(2)DatagramPacket(数据包)里面装有,发送者地址,接收者地址,端口,和数据,DatagraSocket发送数据包

(3)系统不保证能否把数据送达目的地,也不一定什么时候到达

(4)数据包,有发送者接收者地址,所以发送前不用建立连接,不需要三次握手。

3、例子,注意事项在离子里面

package com.udp.test;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException; import org.junit.Test; public class TestUDP {
private static String SERVER_HOST = "127.0.0.1"; //发送端(和socket的客户端注意区别)
@Test
public void send(){
//1、创建DatagramSocket对象
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
//2、获取要传输的信息,创建数据包对象
byte [] b = "Hello I am UDP test".getBytes();
DatagramPacket dp = new DatagramPacket(b, 0, b.length,InetAddress.getByName(SERVER_HOST),8090);
//3、发送数据包
ds.send(dp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//4、关闭socket连接
if(ds != null){
ds.close();
}
}
} //接受端(和socket的服务端区别)
@Test
public void receive(){
//1、创建DatagramSocket对像
DatagramSocket ds = null;
try {
ds = new DatagramSocket(8090);
//2、创建数据包对象
byte [] b = new byte[64];
DatagramPacket dp = new DatagramPacket(b,0,b.length);
//3、接收
ds.receive(dp);
//4、存到字符串dp.getData()方法
String str = new String(dp.getData(),0,dp.getData().length);
System.out.println(str);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{ //5、关闭ds
if(ds != null ){
ds.close();
} } }
}

网络编程2-UDP编程(DatagramSocket)的更多相关文章

  1. java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式)

    java:网络编程(UDP (DatagramSocket和DatagramPacket)正则表达式) * TCP* 特点:面向连接,点对点的通信,效率较低,但安全可靠* UDP:用户数据报协议,类似 ...

  2. 网络编程之UDP编程

    网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了Data ...

  3. java 网络编程基础 UDP协议DatagramSocket,MulticastSocket 实现局域网聊天软件(Server + Client模式)

      开发思路: 服务端两个Socket: UDP的DatagramSocket接收客户端消息. 广播multicastSocket 发送广播消息 客户端一个Socket: multicastSocke ...

  4. python网络-Socket之udp编程(24)

    一.udp简介 udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议. udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地. udp在 ...

  5. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  6. 37 - 网络编程-UDP编程

    目录 1 UDP协议 2 UDP通信流程 3 UDP编程 3.1 构建服务端 3.3 常用方法 4 聊天室 5 UDP协议应用 1 UDP协议 UDP是面向无连接的协议,使用UDP协议时,不需要建立连 ...

  7. 牛客网Java刷题知识点之TCP、UDP、TCP和UDP的区别、socket、TCP编程的客户端一般步骤、TCP编程的服务器端一般步骤、UDP编程的客户端一般步骤、UDP编程的服务器端一般步骤

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  8. TCP/IP协议网络编程以及UDP和TCP之传输协议

    1.什么是TCP/IP协议? 网络编程协议有很多,目前应用最广泛的是TCP/IP协议(Transmission Control Protocal/Internet Protoal 传输控制协议/英特网 ...

  9. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  10. [C# 网络编程系列]专题六:UDP编程

    转自:http://www.cnblogs.com/zhili/archive/2012/09/01/2659167.html 引用: 前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当 ...

随机推荐

  1. 你所知道好玩有趣的 iOS URL schemes 有哪些?

    QQ的url是 mqq:// 微信是weixin:// 淘宝taobao:// 点评dianping:// dianping://search 微博 sinaweibo:// 名片全能王camcard ...

  2. Java中StringBuilder的清空方法比较

    StringBuilder 没有提供clear或empty方法.清空有3种方法:1)使用delete2)新生成一个,旧的由系统自动回收3)使用setLength 将三种方法循环1000万次,代码: p ...

  3. Linux/UNIX 定时任务 cron 详解

    定时任务( job)被用于安排那些需要被周期性执行的命令.利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行.cron 是 Linux 或者类 Unix 系统中最为实用的工具之一 ...

  4. 【项目】'NSRangeException', reason: '*** -[__NSArrayM removeObjectAtIndex:]: index 2 beyond bounds [0 .. 1]'

    问题代码: [self.assetsArray objectAtIndex:indexPath.row] 问题解决思路:这里

  5. >>> FilterDispatcher <<< is deprecated! Please use the new filters!

    在struts2.3.20下,web.xml中使用 会出现*********************************************************************** ...

  6. node项目换了环境node_modules各种报错

    依赖文件里,看的出来有些是 ELF 的文件,就是说有些文件是可执行程序,不是拿 js 写的,所以说这部分程序不能适合 Linux .从路径来看,这部分程序的源代码是js写的,但实际调用的是js编译之后 ...

  7. MVC页面重定向'页面跳转

    MVC页面重定向,主要有以下几种形式: 1.Response.Redirect();方法 using System; using System.Collections.Generic; using S ...

  8. HTML学习笔记——锚链接、pre标签、实体

    1>锚链接 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  9. 扩展服务 修改新增Service的默认主题

    问题描述:想要在F:\PHPnow-1.5.6\htdocs\yt\Yourphp\Tpl\      目录下新增一个Service\Default(A)   和Service\new(B) 两个主题 ...

  10. CSS3新增基础属性总结——20160409(易达客)

    1.box-shadow :h-shadow v-shadow blur spread color inset(outset) h-shadow:必须:水平阴影位置,允许负值. v-shadow:必须 ...