7.3(java学习笔记)网络编程之UDP】的更多相关文章

一.UDP UDP的全称是User Datagram Protocol(用户数据报协议),是一种无连接的不安全的传输协议, 传输数据时发送方和接收方无需建立连接,所以是不安全的. 发送时不建立连接直接发送,发送后不关注接受方能否接到.UDP只负责发出去,后续的事情与之无关. 1).使用UDP发送和接受数据的过程: 1接收数据: 1.1创建数据包实例,用于接收数据.(指定接收方IP,端口) 1.2创建接收容器 1.3将接收容器封装成包 1.4接收包 1.5处理包(可以看做拆包,将包中数据拿出来)…
服务端的实现 package com.gh.echo; import java.io.*; import java.net.*; /** * echo服务器程序 * 实现 不断接收字符串 ,然后返回一个echo+字符串 * 服务程序写成多线程 * @author ganhang * */ public class EchoServerDemo { public static void main(String[] args) { try { ServerSocket ss = new Server…
UDP协议的输出端: /* UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) */ public class NewSend { public static void main(String[] args) throws IOException { // A:创建Socket发送端对象 DatagramSocket ds = new DatagramSocket(); // B:创建数据报包(把数…
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. E:发送端与接收端是两个独立的运行程序. UDP传输-发送端思路 UDP发送数据: A:创建Socket发送端对象 B:创建数据报包(把数据打包) C:调用Socket对象发送数据报包 D:释放资源(底层是IO流) UDP传输-发送端代码 public static void main(Strin…
Java网络编程之UDP 一.C/S架构中UDP网络通信流程 ①创建DatagramSocket与DatagramPacket对象 ②建立发送端,接收端 ③建立数据包 ④调用Socket的发送.接收方法 ⑤关闭Socket 注意:发送端与接收端是两个独立的运行程序,在接收端需要指定监听的端口 基本的流程如下图所示 在Java中类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序. UDP数据报通过数据报套接字 DatagramSocket 发送和接…
网络编程之UDP编程 UDP协议是一种不可靠的网络协议,它在通信的2端各建立一个Socket,但是这个Socket之间并没有虚拟链路,这2个Socket只是发送和接受数据的对象,Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送和接受数据报.值得注意的是:UDP编程必须先由客户端发出信息.一个客户端就是一封信,Socket相当于美国式邮筒(信件的收发都在一个邮筒中).端口与协议相关,所以TCP的30…
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址:InetAddress 网络中设备的标识 不易记忆,可用主机名 本地回环地址:127.0.0.1 主机名:localhost InetAddress ia = InetAddress.getByName("www.baidu.com"); System.out.println("…
详细介绍了java中的网络通信机制,尤其是UDP协议,通过对UDP的基本使用进行举例说明如何使用UDP进行数据的发送接收,并举了两个小demo说明UDP的使用注意事项. UDP协议原理图解: UDP协议:需要借助于InetAddress来获取设备的IP地址,以及姓名 import java.io.IOException; import java.net.Inet4Address; import java.net.InetAddress; import java.net.UnknownHostEx…
Socket的简单认识 Socket是一种面向连接的通信协议,Socket应用程序是一种C/S(Client端/Server端)结构的应用程序 Socket是两台机器间通信的端点. Socket是连接运行在网络上的两个程序间的双向通讯端点. Socket通信原理 Server服务端的输入流相当于Client客户端的输出流 Server服务端的输出流相当于Client客户端的输入流 注意 文件传输使用字节流(Steam) 使用DataOutputStream,DataOutputStream可以传…
TCP实现多用户上传文件: 需要同时给多用户上传文件,这样就得用多线程来实现. 实际上,这样的话,上传的先后顺序和速度就跟客户端的带宽有关:带宽够,就容易抢占到线程的执行权: 首先,创建个线程类:(这个线程类执行的是服务器的功能) 线程类代码: public class UserThread implements Runnable { // 构造方法接收对象 private Socket s; public UserThread(Socket s) { this.s = s; } public…
上次的是上传TXT文件,这次上传的是图片.同样,上传成功需要反馈给客户端. 区别: TXT文件用记事本打开,我们可以看得懂,所以用了缓冲字符流,对通道内的字节流进行包装了. 而图片用记事本打开,我们看不懂,所以就用缓冲字节流,只需要把通道内的字节流转换成高效字节流就可以了. 客户端: public class ClineDemo { public static void main(String[] args) throws IOException { // 创建Socket对象 Socket s…
TCP练习: 1.客户端键盘录入,服务器输出文本文件 客户端代码: public class ClientDemo { public static void main(String[] args) throws IOException { // 创建socket对象 Socket s = new Socket("172.19.12.233", 10010); // 创建键盘输入流,用转换流包装成字符流 BufferedReader br = new BufferedReader(new…
TCP传输 Socket和ServerSocket 建立客户端和服务器 建立连接后,通过Socket中的IO流进行数据的传输 关闭socket 同样,客户端与服务器是两个独立的应用程序 TCP协议发送和接收数据的思路图解: TCP传输-客户端思路 1:建立客户端的Socket服务,并明确要连接的服务器. 2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流. 3:通过Socket对象的…
Socket Socket套接字: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. Socket原理机制: 通信的两端都有Socket. 网络通信其实就是Socket间的通信. 数据在两个Socket间通过IO传输. Socket套接字图解:…
package Socket; import java.net.DatagramPacket; import java.net.InetAddress; public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), b…
java.net  类 DatagramSocket 此类表示用来发送和接收数据报包的套接字,数据报套接字是包投递服务的发送或接收点. java.net  类 DatagramPacket 此类表示数据报包,数据报包用来实现无连接包投递服务.    <1> void send(DatagramPacket p)            从此套接字发送数据报包.  DatagramPacket(byte[] buf, int length, InetAddress address, int por…
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h…
1.Socket通信原理 Socket套接字概述: 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信. 数据在两个Socket间通过IO流传输. Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和port. B:图解 二.UDP传输 1.发送Send 创建DatagramSocket, 随机端口号 创建DatagramPacket, 指定数据, 长度, 地址,…
1.网络模型: |--OSI(open stystem Interconnection开放式系统互连) |--特点: 是一种异构系统互连的分层结构:提供了控制互连系统交互规则的标准骨架:定义一种抽象结构,而并非具体实现的描述:不同系统中相同层的实体为同等层实体:同等层实体之间通信由该层的协议管理:相信层间的接口定义了原语操作和低层向上层提供的服务:所提供的公共服务是面向连接的或无连接的数据服务:直接的数据传送仅在最低层实现:每层完成所定义的功能,修改本层的功能并不影响其他层. |--七层结构:…
SequenceFile(Hadoop序列文件)基础知识与应用 上篇编程实战系列中本人介绍了基本的使用HDFS进行文件读写的方法,这一篇将承接上篇重点整理一下SequenceFile的相关知识及应用 1. SequenceFile简介 SequenceFile是Hadoop自带的一种键值对文件格式,它具有以下几个特点: 1. 由于该文件类型是Hadoop自带的,因此对Hadoop环境具有最强的兼容性 2. 由于Hadoop不适合存储大量小文件,SequenceFile作为容器文件,能够封装大量的…
上次所写的代码中,客户端和服务器端所进行的数据传输所用的是字节流. 优化: A:这次,为了高效,对这个字节流通过转换流来进行包装,包装成高效字符流. B:这次,传输的数据是通过键盘录入的数据. 服务器端代码: /* TCP协议: 服务器端 */ public class ServerDemo { public static void main(String[] args) throws IOException { // 创建socket接收端对象监听 ServerSocket ss = new…
阅读方法:将网页放大到200%. 如果你用过用过word应该知道按住ctrl键使用鼠标滚轮缩放.…
介绍UDP通信协议的编程之前,先介绍一下网络编程,socket相关的概念: 网络编程:网络编程主要用于解决计算机与计算机(手机平板等)之间的数据传输问题. 网络编程:不需要基于html网页就可以达到数据之间的传输.比如,飞秋,QQ,微信等等 网页编程:基于html页面的基础上进行数据的交互与传输.比如说淘宝,oa(办公自动化)等 计算机网络:分布在不同地域的计算机通过外部设备相互连接起来达到了消息互通,资源共享的效果,这就叫做计算机网络. 网络通讯的三要素: 1.IP,计算机在网络中唯一的身份标…
UDP 什么是UDP协议 在上节课的练习中,使用TCP进行网络编程时,我们会遇到粘包问题,这是因为TCP是流式协议,而今天学习的UDP协议不是流式协议,其发送的数据是数据报格式的,在进行数据发送时该协议会自动加上报头及报尾,使每次发送的数据之间都是有间隔的,这样在进行接收时就会每次接收一条数据. 为什么会有UDP协议? 在使用TCP协议进行通讯时,由于TCP协议需要进行三次握手建连接,四次挥手断连接,这个过程虽然十分可靠,但是这个过程十分的繁琐,会影响数据之间的通讯效率,对于一些对于数据的可靠性…
读书笔记:here 结论1:局域网环境下,建议将UDP数据控制在1472字节以下 一定要知道 因为链路层的传输单元(MTU)是1500字节,1500字节中并不包含链路层的首尾18个字节.1500字节是链路层的数据区. udp数据包就是放在这个数据区中, 网络层是数据链路层的上层,所以,网络层IP数据报长度就是1500字节. 这1500字节包含了IP数据报首部+IP数据报的数据区. 1500-20=1480,这1480的长度专门存放TCP传来的数据报: TCP或者UDP数据报. 由上可知,UDP数…
UDP编程流程:一服务端:1.创建socket.  DatagramSocket socket = new DatagramSocket(8878); 2.创建数据包,用来接收发送的数据包.byte[] b = new byte[1024];DatagramPacket dp = new DatagramPacket(b,0,b.length); 3.接收数据.scoket.recive(dp); 4.关闭资源 二客户端:1.创建socket . DatagramSocket socket =…
读书笔记 from here UDP socket缓冲区满造成的UDP丢包 如果socket缓冲区满了,应用程序没来得及处理在缓冲区中的UDP包,那么后续来的UDP包会被内核丢弃,造成丢包.在socket缓冲区满造成丢包的情况下,可以通过增大缓冲区的方法来缓解UDP丢包问题.但是,如果服务已经过载了,简单的增大缓冲区并不能解决问题,反而会造成滚雪球效应,造成请求全部超时,服务不可用. UDP socket缓冲区过小造成的UDP丢包 如果Client发送的UDP报文很大,而socket缓冲区过小无…
读书笔记 from here 高效 Linux系统有用户空间(用户态)和内核空间(内核态)之分,内核与用户空间发生切换比较耗时,内核需要保存上下文.执行用户态数据.再恢复到保存的上下文. 实际中,应该尽量避免用户态与内核态的切换,无法避免?那就减少与内核态的切换,减少与内核态的数据交换. UDP是基于用户数据报的,相对字节流的TCP,是另一种不同的方式. 简单理解为: UDP数据报调用函数sendto,每一次都会发送一块数据出去. 低销 这里的销, 是指的对内核的开销. sendto代码: if…
UDP协议 UDP(User Datagram Protocol)也就是用户数据报协议,是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范. 提到无连接数据传输,那我们首先想到的就是不可靠,数据丢失等等,那么在我们的日常软件中,UDP协议到底都应用在什么场景上呢?举一个大家比较熟悉的例子,就是我们平时所用的聊天软件,因为我们的聊天软件所传输的数据并非是重要数据. 通过ip和端口号,我们可以实现一个小的聊天软件,有兴趣的朋友可以在局域网内通过…
http://blog.csdn.net/rl529014/article/details/52888525…