如何用Java编写简单的UDP网络通信程序?
java中封装了大量的socket API,为编写网络通信程序提供了极大的方便。
在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述。
仅给出接收端和发送端的源代码,供大家讨论和批评。
发送端代码如下: //只要稍加改进,即可发送数据 import java.io.*; import java.lang.*; import java.net.*; public class uclient { private DatagramSocket cli; private DatagramPacket pac; private byte sb[]; private String sen; public uclient() { Init(); } public void Init() { try { //指定端口号,避免与其他应用程序发生冲突 cli=new DatagramSocket(10002); sb=new byte[1024]; sen="UDP方式发送数据"; sb=sen.getBytes(); pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005); cli.send(pac); } catch(SocketException se) { se.printStackTrace(); } catch(IOException ie) { ie.printStackTrace(); } } public static void main(String args[]) { new uclient(); } } 接收端数据: //加以改进代码,可以改变接收方式 import java.io.*; import java.lang.*; import java.net.*; public class userve { private DatagramSocket ser; private DatagramPacket pac; private byte rb[]; private String rev; public userve() { Init(); } public void Init() { try { ser=new DatagramSocket(10005); rb=new byte[1024]; pac=new DatagramPacket(rb,rb.length); rev=""; int i=0; while(i==0)//无数据,则循环 { ser.receive(pac); i=pac.getLength(); //接收数据 if(i>0) { //指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点 rev=new String(rb,0,pac.getLength()); System.out.println(rev); i=0;//循环接收 } } } catch(Exception e) { e.printStackTrace(); } } public static void main(String args[]) { new userve(); } }
TCP与UDP应用的例子有哪些?
两种协议都是传输层协议,为应用层提供信息载体.TCP协议是基于连接的可靠协议,有流量控制和差错控制,也正因为有可靠性的保证和控制手段,所以传输效率比UDP低;UDP协议是基于无连接的不可靠协议,没有控制手段,仅仅是将数据发送给对方,因此效率比TCP要高.TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念)等等
服务器和udp网络通信连接失败服务器和UDP网络通信连接失败请确
UDP数据包和TCP数据包一样,是一种网络协议的数据包! UDP数据包具有较强的网络穿透能力,可以用于网络环境相对复杂的场合进行网络通信。
其代表软件就是腾讯QQ UDP数据包的缺点在与他不会像TCP包那样,发送出去后会等待接受方的验证是否收到,数据包是否合法。
这样就造成UDP数据包相对TCP数据包更容易出现数据包丢失的情况。
如果对一台主机发送大量的UDP数据包,就会造成DoS攻击。
现在从各个厂商的硬件防火墙来看,能够实现这种攻击的只有UDP数据包。
TCP和SYN数据包大多会被拦截,无法形成攻击。
参考资料:http://zhidao.baidu.com/question/2080889.html...
网络问题,tcp/udp通信程序均跑不通,请高手解答,谢谢!
UDP(User Datagram Protocol) 用户数据报协议 (RFC 768) 用户数据报协议(UDP)是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP 协议基本上是 IP 协议与上层协议的接口。
UDP 协议适用端口分别运行在同一台设备上的多个应用程序。
由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。
这是通过使用 UDP 的“端口号”完成的。
例如,如果一个工作站希望在工作站 128.1.123.1 上使用域名服务系统,它就会给数据包一个目的地址 128.1.123.1 ,并在 UDP 头插入目标端口号 53 。
源端口号标识了请求域名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。
UDP 端口的详细介绍可以参照相关文章。
与TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。
由于 UDP 比较简单, UDP 头包含很少的字节,比 TCP 负载消耗少。
UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议或应用程序提供错误和流控制功能的时候。
UDP 是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SNMP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
协议结构 Source Port — 16位。
源端口是可选字段。
当使用时,它表示发送程序的端口,同时它还被认为是没有其它信息的情况下需要被寻址的答复端口。
如果不使用,设置值为0。
Destination Port — 16位。
目标端口在特殊因特网目标地址的情况下具有意义。
Length — 16位。
该用户数据报的八位长度,包括协议头和数据。
长度最小值为8。
Checksum — 16位。
IP 协议头、UDP 协议头和数据位,最后用0填补的信息假协议头总和。
如果必要的话,可以由两个八位复合而成。
Data — 包含上层数据信息。
UDP的特点: UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。
UDP协议有如下的特点: 1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。
2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。
3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。
4、UDP传送数据较TCP快速,系统开销也少。
从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。
qq里的传输都是UDP方式的吗
用户数据报协议(UDP)是 ISO 参考模型中一种无连接的传输层协议,提供面向操作的简单不可靠信息传送服务。
UDP 协议直接工作于IP协议的顶层。
UDP 协议端口不同于多路应用程序,其运行是从一个单个设备到另一个单个设备用户数据报协议(UDP) 介绍 用户数据报协议是定义用来在互连网络环境中提供包交换的计算机通信的协议。
此协议默认认为网路协议(IP)是其下层协议。
此协议提供了向另一用户程序发送信息的最简便的协议机制。
此协议是面向操作的,未提供提交和复制保护。
如果应用程序要求可靠的数据传送应该使用传输控制协议(TCP)。
数据报格式如下: 0 7 8 15 16 23 24 31 +-----------+-----------+----------+------------+ | 源端口 | 目的端口 | +-----------+-----------+----------+------------+ | 长 度 | 校验码 | +-----------+-----------+----------+------------+ | 数 据 ...... +-----------+----------....... 用户数据报格式 用户数据报头格式 域 源端口是可选域,当其有意义时,它指的是发送进程的端口,这也就假定了在没有其它信息的情况下,返回信息应该向什么地方发送。
如果不使用它,则在此域中填0。
目的端口在有特定的目的网络地址时有意义。
长度指的是此用户数据报长度的八进制表示。
(这表明最小的数据报长度是 8。
)校验码有16位,是对IP头,UDP头和数据中信息包头的数位取反之和再取反得到的。
包头从概念上说是在UDP头信息之前的,它包括有源地址,目的地地址,所使用的协议和UDP长度。
这些信息使信息不能被错误地接收。
这个校验过程与TCP中使用的过程一致。
0 7 8 15 16 23 24 31 +-----------+-----------+----------+------------+ | 源地址 | +-----------+-----------+----------+------------+ | 目的地址 | +-----------+-----------+----------+------------+ | 0 | 协议 | UDP长度 | +-----+-----+----+------+-----+-----+----+------+ 如果计算出的校验码为零,它将被全零发送。
全零的校验值意味着发送者未产生校验码。
用户接口 用户接口应该允许创建新的接收端口,在接收端口的接收操作有:应该返回一个八进制数说明源端口和源地址,允许数据报传送,指定数据, 源和目标端口和目的地地址。
IP层接口 UDP模块必须能够决定源和目标的网络地址,而且必须能够从包头中得知所使用的协议。
一个可能的接口方式是返回整个数据报,包括接收操作返回的包头。
这样的接口还应该允许UDP向IP传送完整的带包头的数据报用于传送。
由IP来确定一致性并计算校验码。
协议应用 此协议的最主要的用途是网际名称服务器和小文件传输协议(TFTP)。
协议号 在IP中使用它时,它的协议号是17(八进制中是21)。
UDP数据包和TCP数据包一样,是一种网络协议的数据包!UDP数据包具有较强的网络穿透能力,可以用于网络环境相对复杂的场合进行网络通信。
其代表软件就是腾讯QQ UDP数据包的缺点在与他不会像TCP包那样,发送出去后会等待接受方的验证是否收到,数据包是否合法。
这样就造成UDP数据包相对TCP数据包更容易出现数据包丢失的情况。
如果对一台主机发送大量的UDP数据包,就会造成DoS攻击。
现在从各个厂商的硬件防火墙来看,能够实现这种攻击的只有UDP数据包。
TCP和SYN数据包大多会被拦截,无法形成攻击。
网络通信时怎么实现的
1)你是很有思想的学习者,向你致敬。
2)计算机用0或1表示数据,是因为代表0和1的物理器件比较容易实现,比如开关管,磁介质等3)网线里走的是无线电载波,上面调制了0,1这样的数据。
这种方式通常叫曼彻斯特编码。
4)计算机上的网卡收到这样的电信号,会把它解码成0和1构成的比特流。
5)计算机中的其它网络协议软件(如WINDOWS的TCP/IP协议栈)将这些数据的内容读出来,交给应用程序。
这样应用程序之间就可以互相通信了。
这样的回答能让你满意吗?...
采用的是TCP协议还是UDP协议
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! TCP/IP协议是一个协议簇。
里面包括很多协议的。
UDP只是其中的一个。
之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
TCP/IP协议集包括应用层,传输层,网络层,网络访问层。
其中应用层包括: 超文本传输协议(HTTP):万维网的基本协议. 文件传输(TFTP简单文件传输协议): 远程登录(Telnet),提供远程访问其它主机功能,它允许用户登录 internet主机,并在这台主机上执行命令. 网络管理(SNMP简单网络管理协议),该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等. 域名系统(DNS),该系统用于在internet中将域名及其公共广播的网络节点转换成IP地址. 其次网络层包括: Internet协议(IP) Internet控制信息协议(ICMP) 地址解析协议(ARP) 反向地址解析协议(RARP) 最后说网络访问层:网络访问层又称作主机到网络层(host-to-network).网络访问层的功能包括IP地址与物理地址硬件的映射,以及将IP封装成帧.基于不同硬件类型的网络接口,网络访问层定义了和物理介质的连接. 当然我这里说得不够完善,TCP/IP协议本来就是一门学问,每一个分支都是一个很复杂的流程,但我相信每位学习软件开发的同学都有必要去仔细了解一番。
下面我着重讲解一下TCP协议和UDP协议的区别。
TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。
一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程:主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。
三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
详细点说就是:(文章部分转载http://zhangjiangxing-gmail-com.iteye.com,主要是这个人讲解得很到位,的确很容易使人理解!) TCP三次握手过程 1 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段, 主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我. 2 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事: 我已经收到你的请求了,你可以传输数据了;你要用哪佧序列号作为起始数据段来回应我 3 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了 这样3次握手就完成了,主机A和主机B 就可以传输数据了. 3次握手的特点 没有应用层的数据 SYN这个标志位只有在TCP建产连接时才会被置1 握手完成后SYN标志位被置0 TCP建立连接要进行3次握手,而断开连接要进行4次 1 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 2 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1 3 由B 端再提出反方向的关闭请求,将FIN置1 4 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束. 由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端 和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础 名词解释 ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段 都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性. SYN 同步序列号,TCP建立连接时将这个位置1 FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1 TCP的包头结构: 源端口 16位 目标端口 16位 序列号 32位 回应序号 32位 TCP头长度 4位 reserved 6位 控制代码 6位 窗口大小 16位 偏移量 16位 校验和 16位 选项 32位(可选) 这样我们得出了TCP包头的最小长度,为20字节。
UDP(User Data Protocol,用户数据报协议) (1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。
在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息...
转载请注明出处51数据库 » udp网络通信软件程序