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相对于TCP来说是不可信任的
TCP在建立连接之前有3次握手,连接建立之后还有数据重传机制来保证数据的稳定传输
而UDP并没有握手机制和重传机制。
简单点说就是UDP通信时仅仅管发,而无论对方收不收的到。
而TCP在每次通信完毕后都要有一个包来确认是否收到。校验是否完善,否则就会重传。
UDP
将数据及源和目的封装成数据包中,不须要建立连接。每一个数据报的限制大小在64内,因无连接。是不可靠协议。
不须要建立连接,速度快。
TCP
建立连接,形成数据传输的通道,在连接中进行大数据量传输,通过三次握手完毕连接。是可靠协议。必须建立连接。效率会稍低。
三次握手,(张三你在吗?)(我在。)(好,我知道你在了。
)
以下是採用UDP发送方式的样例
(一)UDP发送端
需求:通过UDP传输方式,将一段文字数据发送出去。
思路:
1、 建立udpsocket服务
2、 提供数据,并将数据封装到数据包中
3、 通过socket服务的发送功能。将数据包发送出去。
4、 关闭资源。
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 Work {
public static void main(String[] args) throws IOException {
//创建UDp服务,通过DatagramSocket对象,随机选择数据端口进行发送
DatagramSocket ds=new DatagramSocket();
//确定数据。并封装成数据包
byte[] buf="dadfdadsfsafasdf".getBytes();
DatagramPacket dp=
new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.100"),1000);
//通过socket服务。将已有的数据包发送出去,通过send方法
ds.send(dp);
//关闭资源
ds.close(); }
}
(二)UDP接收端
定义udp的接收端
需求:
定义一个应用程序。用于接收UDP协议传输的数据并处理。
1、 定义udpSocket服务,一般会监听一个port。
事实上就是给这个接收网络应用程序定义数字标识。方便于明白哪些数据过来应用程序能够处理。
2、 定义一个数据包。由于要存储接收到的字节数据。
由于数据包对象中有很多其它功能能够提前字节数据中的不同数据信息。
3、 通过socket服务的receive方法将收到的数据存入已定义好的数据包中
4、 通过数据包对象的特有功能。将这些不同的数据取出,打印在控制台上。
5、关闭资源
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket; public class ReData {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10000);
byte[] arr = new byte[1024];
DatagramPacket dp = new DatagramPacket(arr, arr.length);
ds.receive(dp);/
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();
}
} DatagramSocket ds = new DatagramSocket(10000);
在while(true)循环运行该语句,就会出现端口已使用异常。
JAVA网络编程--UDP通信的更多相关文章
- Java网络编程UDP通信原理
前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信 TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...
- java网络编程Socket通信详解
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...
- java 网络编程 UDP TCP
网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信....网页编程: ...
- java网络编程(UDP详解)
UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...
- Java网络编程——UDP聊天程序
UDP简介 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报.在OSI模型中,UDP位于第四层--传输层,处于IP协议额上一层.UDP有不提供数据报分组.组装以及不能对数据报排序 ...
- JAVA网络编程TCP通信
Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...
- Java网络编程Socket通信
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 UDP (User Datagram Proto ...
- Java网络编程(UDP协议:接收端)
package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...
- Java网络编程(UDP协议:发送端)
package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...
随机推荐
- ios Button
展现效果例如以下: 功能说明: 1加入来图片背景, 2动态展现百度网页, 3动态加入button. 4展现提示框.展现你点击提示框得index 我成功来你也快来试试. 1 详细得项目创建与拖动but ...
- hdoj--1495--非常可乐(搜索+隐式图)
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- NPAPI——实现非IE浏览器的类似ActiveX的本地程序(插件)调用
一.Netscape Plugin Interface(NPAPI) 大致的说明可以看下官方文档Plugin 本文主要针对于JavaScript与插件交互部分做一些交流,比如用于数字证书的操作(淘宝和 ...
- 基于Socket的Winform例子
一.直接上效果图 二.Socket握手 三.服务端 Thread threadWatch = null;// 负责监听客户端的线程 Socket socketWatch = null;// 负责监听客 ...
- Memcache使用场景
session //php文件中 ini_set("session.save_handler", "memcache"); ini_set("sess ...
- APUE学习笔记6——线程和线程同步
1 概念 线程是程序执行流的最小单元.线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的 ...
- C++面向对象的设计思想——小结
1 对象的概念 面向对象(Object Oriented Analysis Design,OOAD)的思想把整个世界看成是由具有某种特征行为功能的基本单元——对象构成的.OOAD把一个对象的特征称为属 ...
- Constants and Variables
1.定义 Constants :程序编译的时候就已经存在且在程序生命周期内不会改变的值. Variables:变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值.每个变量都有一 ...
- 优动漫结合Photoshop怎么画草地?
今天继续技法教学~草地的技法,PS教学~但是很简单,都是默认工具,而且是常用工具VS常用设置.你肯定会学会的! 草地教程,就到这里啦!有兴趣的可以尝试画一画哦,想要Get到更多有关优动漫的信息包括软件 ...
- Java实现18位身份证校验代码
import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...