首先网络传输数据需了解例如以下三点

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通信的更多相关文章

  1. Java网络编程UDP通信原理

    前言 继续今天我们的Java网络编程--TCP和UDP通信 一.TCP和UDP概述 传输层通常以TCP和UDP协议来控制端点与端点的通信   TCP UDP 协议名称 传输控制协议 用户数据包协议 是 ...

  2. java网络编程Socket通信详解

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

  3. java 网络编程 UDP TCP

    网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信....网页编程: ...

  4. java网络编程(UDP详解)

    UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...

  5. Java网络编程——UDP聊天程序

    UDP简介 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报.在OSI模型中,UDP位于第四层--传输层,处于IP协议额上一层.UDP有不提供数据报分组.组装以及不能对数据报排序 ...

  6. JAVA网络编程TCP通信

    Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端 ...

  7. Java网络编程Socket通信

        TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议     UDP (User Datagram Proto ...

  8. Java网络编程(UDP协议:接收端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

  9. Java网络编程(UDP协议:发送端)

    package WebProgramingDemo; import java.io.IOException; import java.net.DatagramPacket; import java.n ...

随机推荐

  1. STL之效率比較

    1.vector 变长一维数组,连续存放的内存块,有保留内存.堆中分配内存: 支持[]操作,高效率的随机訪问: 在最后添加元素时,一般不须要分配内存空间,速度快:在中间或開始操作元素时要进行内存拷贝效 ...

  2. lpad&rpad

    lpad( string, padded_length, [ pad_string ] ) string: 准备被填充的字符串 padded_length: 填充之后的字符串长度 pad_string ...

  3. 视图 Model转集合

    @{    Layout = null;}@using MvcApplication2.Models <!DOCTYPE html> <html><head>    ...

  4. 通过配置host,自定义域名让本地访问

    最近服务器这块一直由我来维护,我们开发的项目很多域名根本没有解析,而是仅仅配置了host,就可以本地访问服务器了.感觉很有意思,于是乎,打算试一试.结果弄了许久,最后第二天才解决了.把这个艰辛的旅程记 ...

  5. C++逐行读取文本文件的正确做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 之前写了一个分析huson日志的控制台程序,其中涉及到C++逐行读取文本文件的做法,代码是这样写的: ifstream ...

  6. SQLAlchemy tutorial

    SQLAlchemy tutorial 重要概念 ORM:数据库对象 <--> class --> 类实例instance 定义数据库连接 session:数据库事务通过sessio ...

  7. C#实现软件监控外部程序运行状态的方法

    本文实例讲述了C#实现软件监控外部程序运行状态的方法.分享给大家供大家参考.具体方法如下: 需要外挂一个程序,用于监控另一个程序运行状态,一旦检测到另一程序关闭,就触发一个事件做其他处理. using ...

  8. Java之Foreach语句

    Foreach是for语句的特殊简化版本,但任何时候的foreach语句都可以改写成for语句.Foreach语句在遍历数组等方面为程序员提供了很大的方便 语法如下: For(元素变量 x:遍历对象o ...

  9. Python更换pip源,更换conda源

    更换pip源: 1.在windows文件管理器中,输入 %APPDATA% 2.在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件 3.在新建的pip.ini文件中输入以下内 ...

  10. ONGUI->NGUI->UGUI (Unity UI史)

    各GUI的介绍 ONGUI:Unity自带的绘制界面工具,它的成像原理是基于表层的,所以执行效率非常的低,并且没有提供复杂的UI的接口,就算开发者硬着头皮写上去只能让UI的执行效率更低. NGUI:第 ...