1、基本知识:
socket是一种抽象层,应用程序通过它来发送和接收数据,就像应用程序打开一个文件句柄,将数据读写到稳定的存储器上一样。使用sokcet可以将应用程序添加到网络中,并与处于同一个网络中的其他应用程序进行通信。一台计算机上的应用程序向socket写入的信息能够被另一台计算机上的另一个应用程序读取,反之亦然。
不同类型的socket与不同类型的底层协议族以及同一协议族中的不同协议栈相关联TCP/IP协议族中的主要socket类型为流套接字和数据报套接字。流套接字将TCP作为端对端协议,提供了一个可信赖的字节流服务。一个TCP/IP流套接字代表了TCP连接的一端。数据报套接字使用UDP协议,提供了一个“尽力而为”(best-effort)的数据报服务,应用程序可以通过它发送最长65500字节的信息。
一个TCP/IP套接字由一个互联网地址,一个端对端协议(TCP或UDP协议)以及一个端口号唯一确定。
2、套接字地址
InetAddress类代表了一个网络目标地址,包括主机名和数字类型的地址信息。该类有2个子类,Inet4Address和Inet6Address,分别对应了目前IP地址的2个版本。InetAddress实例是不可变的,一旦创建,每个实例就始终指向同一地址。
下面结合NetworkInterface类来展示InetAddress的使用。NetworkInterface类提供了访问主机所有接口信息的功能,这个功能很有用,比如一个应用程序需要通知其他程序其IP地址时就会用到。
import java.net.*;
import java.util.*;
public class InetAddressExample {
public static void main(String[] args){
try{
Enumeration<NetworkInterface> interfaceList = NetworkInterface.getNetworkInterfaces();
if(interfaceList == null){
System.out.println("-- No interfaces found --");
}else{
while(interfaceList.hasMoreElements()){
NetworkInterface iface = interfaceList.nextElement();
System.out.println("Interface " + iface.getName() + ":");
Enumeration<InetAddress> addrList = iface.getInetAddresses();
if(!addrList.hasMoreElements()){
System.out.println("\t(No address for this interface)");
}
while(addrList.hasMoreElements()){
InetAddress address = addrList.nextElement();
System.out.println("\tAddress " + ((address instanceof Inet4Address ?
"(v4)" : (address instanceof Inet6Address ? "v6" : "(?)"))));
System.out.println(": " + address.getHostAddress());
}
}
}
}catch(SocketException se){
System.out.println("Error geting network interfaces:" + se.getMessage());
}
for(String host : args){
try{
System.out.println(host + ":");
InetAddress[] addressList = InetAddress.getAllByName(host);
for(InetAddress address : addressList){
System.out.println("\t" + address.getHostName() + "/" + address.getHostAddress());
}
}catch(UnknownHostException e){
System.out.println("\tUnable to find address for " + host);
}
}
}
}
分享到:
相关推荐
Java TCP/IP Socket编程是Java网络通信...总的来说,"java TCP/IP socket 编程(原书第2版)"是一本深入解析Java网络编程的书籍,通过阅读和实践,你将能够熟练掌握Socket编程,为构建稳定的网络应用程序打下坚实基础。
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
TCP/IP(Transmission Control Protocol/Internet Protocol)协议栈是互联网通信的基础,而Socket是Java中实现TCP/IP通信的关键组件。本篇将深入探讨Java如何利用TCP/IP协议通过Socket进行网络编程。 TCP/IP协议族...
Java TCP/IP Socket编程是Java网络编程中的重要组成部分,它提供了在网络间进行数据传输的基础机制。TCP(Transmission Control Protocol)和IP(Internet Protocol)是互联网上最基础的通信协议,而Socket则是TCP/...
Java TCP/IP Socket编程原书第2版.pdf 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
现在几乎所有互联网应用程序都使用Java 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
通过这个简单的聊天工具,初学者可以了解到如何使用Java的Socket API进行TCP/IP通信,以及如何结合UI组件实现一个交互式应用。同时,这也是一个很好的实践项目,能够帮助开发者巩固网络编程和多线程的知识。在实际...
本资源包含一本关于Java TCP/IP Socket编程的书籍及其配套源代码,对于深入理解Socket编程至关重要。 书籍《Java TCP/IP Socket编程原书第2版》详细阐述了如何在Java环境中利用Socket进行网络通信。书中涵盖的知识...
在7CP/IP Socket首次发布时,Java作为一个新的未被关注的编程语 言刚出现。然而,自2001年以来,Java的网络编程能力已经得到了很大程度的扩展,而且 持续的应用优势已经使其成为了一个占主导地位的平台。考虑到Java...
Java TCP/IP Socket编程是网络通信领域中的核心技术,尤其在Java编程中,Socket是实现客户端与服务器之间通信的基础。本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字...
Java实现的Socket编程是基于TCP/IP协议的,它提供了一个可靠的数据流服务,可以实现客户端和服务器之间的数据交换。Java中的Socket类和ServerSocket类是两种基本的套接字类,Socket类用于建立客户端和服务器之间的...
总结来说,Java Socket编程为TCP/IP通信提供了一种强大的工具,允许开发者构建可靠、高效的网络应用程序。服务端和客户端的实现通常涉及线程管理和错误处理,以确保系统的稳定性和健壮性。通过学习和实践这些基本...
Java TCP/IP Socket编程是网络通信领域中的核心技术,尤其在Java平台中,Socket是实现客户端与服务器之间通信的基础。原书第二版深入浅出地讲解了Java Socket编程的各个方面,为开发者提供了全面的学习资源。以下是...
根据提供的文件信息,...以上知识点构成了对《TCP/IP Sockets in Java, 2nd Edition.pdf》文件的详细解析,涵盖了TCP/IP和Socket编程的基础知识,Java实现网络通信的方法,以及网络编程在实际中的应用实例和高级主题。
总结,Java Socket TCP/IP编程涉及网络通信的基本原理和Java API的使用,通过Socket类与ServerSocket类,我们可以构建可靠的、基于TCP的网络应用程序。理解并熟练运用Socket编程,能帮助开发者构建复杂、高效、可...
本文将深入探讨一个简单的Java TCP/IP编程示例,为学习者提供理解和实践的基础。 首先,TCP/IP是互联网的核心协议,它确保了数据的可靠传输,通过连接两台或多台计算机进行通信。在Java中,我们使用Socket类来实现...