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接口,为开发者提供了全面的理论知识和实践指导。 首先,我们需要理解TCP/IP模型,它是互联网通信的基础,包括四层:应用层、传输层、网络层和链路层...
《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程技巧时列举了大量的示例程序,每章附有练习。 《Java TCP/IP Socket编程(原书第2版)》适合作为Java Socket编程的入门教程,...
总的来说,《Java + TCP/IP + Socket编程++ 原书第2版》可能会涵盖这些主题:TCP/IP协议基础,Java Socket API的使用,异常处理,多线程编程,以及网络编程的最佳实践。这本书将帮助开发者深入理解如何在Java环境中...
Java TCP/IP Socket编程是Java网络编程中的重要组成部分,它提供了在网络间进行数据传输的基础机制。TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网上最基础的通信协议,而Socket则是TCP/...
标题中的“Can't create TCP/IP socket(24)”是一个典型的错误信息,表示在尝试创建TCP/IP套接字时遇到了问题,错误代码为24。在Linux或Unix系统中,错误代码24通常与"Too many open files"相关,意味着当前进程已经...
Java TCP/IP Socket编程原书第2版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
现在几乎所有互联网应用程序都使用Java Socket进行通信,而本书专注的、教导式的方法,使读者能够快速掌握所有计算机通信的任务和技术要点。 本书特点: 对Socket编程的重点进行了集中简明的介绍,以使读者能够迅速...
"基于TCP/IP的socket编程"是一个深入探讨如何使用socket接口进行网络通信的主题。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
《C# TCP/IP Socket程序员实战指南》是一本深入讲解如何在C#环境下使用TCP/IP协议进行网络编程的书籍。在当今互联网技术飞速发展的时代,掌握网络编程技能,特别是使用C#进行TCP/IP通信,对于软件开发者来说至关重要...
Java TCP/IP Socket编程是网络通信领域中的核心技术,它允许两台计算机通过Internet进行双向通信。在这个自制品中,我们看到的是一个基于Java实现的简单聊天工具,它利用Socket API构建了一个用户界面,使得用户可以...
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编程是网络通信领域中的核心技术,尤其在Java编程中,Socket是实现客户端与服务器之间通信的基础。本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字...
《Java TCP IP Socket编程(原书第2版)》
标题中的“聊天室代码 TCP/IP SOCKET 通信”指的是一个实现基于TCP/IP协议的网络聊天室应用,使用了SOCKET编程接口。在这个应用中,SOCKET是操作系统提供的接口,允许应用程序通过网络进行通信。TCP/IP是一种可靠的...
Java实现的Socket编程是基于TCP/IP协议的,它提供了一个可靠的数据流服务,可以实现客户端和服务器之间的数据交换。Java中的Socket类和ServerSocket类是两种基本的套接字类,Socket类用于建立客户端和服务器之间的...