close()
方法关闭套接字及其关联的输入输出流,从而阻止对其的进一步操作。
shutDownInput()
方法关闭TCP流的输入端,任何没有读取的数据都将被舍弃,包括那些已经被套接字缓存的数据,正在传输的数据以及将要到达的数据。后续的任何从套接字读取数据的尝试都将抛出异常。
shutDownOutput()
方法在输出流上也产生类似的效果,但在具体实现中,已经写入套接字输出流的数据,将被尽量保证能发送到另一端。
UDP套接字与TCP套接字进行通信的一些不同点:
一个微小但重要的差别是UDP协议保留了消息的边界信息。DatagramSocket的每一次receive()调用最多只能接收调用一次send()方法所发送的数据。而且,不同的receive()方法调用绝不会返回同一个send()方法调用所发送的数据。
当在TCP套接字的输出流上调用的write()方法返回后,所有调用者都知道数据已经被复制到一个传输缓存区中,实际上此时数据可能已经被传送,也可能还没有被传送。而UDP协议没有提供从网络错误中恢复的机制,因此,并不对可能需要重传的数据进行缓存。这就意味着,当send()方法调用返回时,消息已经被发送到了底层的传输信道中,并正处在(或即将处在)发送途中。
消息从网络到达后,其所包含数据被read()方法或receive()方法返回前,数据存储在一个先进先出的接收数据队列中。对于已经连接的TCP套接字来说,所有已经接收但还未传送的字节都看作是一个连续的字节序列。然而,对于UDP套接字来说,接收到的数据可能来自于不同的发送者。一个 UDP套接字所接收的数据存放在一个消息队列中,每个消息都关联了其源地址信息。每次receive()调用只返回一条消息。然而,如果 receive()方法在一个缓存区大小为n的DatagramPacket实例中调用,而接收队列中的第一条消息长度大于n,则receive()方法只返回这条消息的前n个字节。超出部分的其他字节都将自动被丢弃,而且对接收程序也没有任何消息丢失的提示!
出于这个原因,接收者应该提供一个有足够大的缓存空间的DatagramPacket实例,以完整地存放调用receive()方法时应用程序协议所允许的最大长度的消息。这个技术能够保证数据不会丢失。一个DatagramPacket实例中所运行传输的最大数据量为65507字节,即UDP数据报文所能负载的最多数据。因此,使用一个有65600字节左右缓存数组的数据包总是安全的。
分享到:
相关推荐
Java TCP/IP Socket编程 Java TCP/IP Socket编程 Java TCP/IP Socket编程
java TCP/IP socket 编程(原书第2版)+部分源码,对于想学习java socket编程很有帮助!
《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程技巧时列举了大量的示例程序,每章附有练习。 《Java TCP/IP Socket编程(原书第2版)》适合作为Java Socket编程的入门教程,...
Java + TCP/IP+ Socket编程++ 原书第2版.pdf 中文版
Java TCP/IP Socket编程原书第2版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
Cannot create TCP/IP socket(24).原因及解决办法
现在几乎所有互联网应用程序都使用Java Socket进行通信,而本书专注的、教导式的方法,使读者能够快速掌握所有计算机通信的任务和技术要点。 本书特点: 对Socket编程的重点进行了集中简明的介绍,以使读者能够迅速...
Java TCP /IP socket 聊天工具:自制的带界面的简易聊天工具。 代码简易,适合学习之用!
两本TCP/IP socket编程书,分别是C语言和Java语言版的。都是文字版的pdf文档。 1. TCP/IP Sockets in Java (2th Edtion) 2. TCP/IP Sockets in C *Series Editor: Michael J. Donahoo
TCP/IP SOCKET 网络编程 多模式I/O网络开发
在7CP/IP Socket首次发布时,Java作为一个新的未被关注的编程语 言刚出现。然而,自2001年以来,Java的网络编程能力已经得到了很大程度的扩展,而且 持续的应用优势已经使其成为了一个占主导地位的平台。考虑到Java...
TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...
《Java TCP IP Socket编程(原书第2版)》
实现了服务器与客户端功能的合二为一,客户端启动后,连接三次服务器,如果失败,则自己自动变为服务器。
TCP/UDP Socket调试工具 V2.3
这个程序是用在windows的,用vc++就能打开运行了,是socket的服务端的,适合修改用在嵌入式开发linux系统里也适合刚学习socket编程的新手了解tcp/IP编程的初手
Java TCP_IP Socket编程源代码书籍以及附带源码Java TCP_IP Socket编程源代码书籍以及附带源码
Java TCP_IP Socket编程(原书第2版)