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 ...
随机推荐
- Linux网络驱动程序
Linux 的网络系统主要是基于 BSD UNIX 的套接字机制. 在系统与驱动程序之间定义了数据结构 sk_buff 进行传输数据.系统支持对发送数据和接收数据缓存,提供流控机制并提供对多协议的支持 ...
- 转:Centos 7 使用git 用 ssh 连接github服务器
https://blog.csdn.net/wzq793957419/article/details/68067204 首先Linux下载git,ssh服务都弄好 生成ssh密钥: $ ssh-key ...
- Visual Studio2013下Magick++配置方法
声明:本文系作者原创,如需转载请保持文章完整并注明出处(http://blog.csdn.net/u010281174/article/details/52224829). ImageMagick是一 ...
- 微信开发中的序列化json问题..
微信开发平台: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list& ...
- QT-项目文件说明
前言:如题. 一.项目文件概述 文件 功能 helloworld.pro 包含了项目信息 helloworld.pro.user 用户信息 hellodialog.h 自定义类hellodialog的 ...
- 关于Java中equal函数和==的一些区别
equal函数比较的到底是什么,很明显是比较的值,但是什么值?与==比较的堆中的内存地址不同,其比较的是对象的值,包括各个属性的值.我们在重新overriding此方法时首先要判断是否为同一对象,如果 ...
- DB2数据库load出现SQL3508N问题
SQL3508N装入或装入查询期间,当存取类型为 "<文件类型>"的文件或路径时出错.原因码:"<原因码>".路径:"< ...
- Java之Foreach语句
Foreach是for语句的特殊简化版本,但任何时候的foreach语句都可以改写成for语句.Foreach语句在遍历数组等方面为程序员提供了很大的方便 语法如下: For(元素变量 x:遍历对象o ...
- submile 安装,汉化,插件
/*删除以前配置文件*/ 删除以前版本sublime后,在删除以前版本的配置信息:直接在C盘 查询里面输入 Roming 然后查找里面的 sublime 文件夹,把他给删除掉 ----------- ...
- Data type-数据类型
操作方式.含义.存储方式. In computer science and computer programming, a data type or simply type is a classifi ...