Socket套接字—Java套接字编程
Posted 优效程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket套接字—Java套接字编程相关的知识,希望对你有一定的参考价值。
来呀!来呀!关注我吧!!
Socket套接字
Java套接字编程(上1)
用Java开发网络软件非常方便和强大,Java的这种力量来源于他独有的一套强大的用于网络的 API,这些API是一系列的类和接口,均位于包java.net和javax.net中。在这篇文章中我们将介绍套接字(Socket)慨念,同时以实例说明如何使用Network API操纵套接字,在完成本文后,你就可以编写网络低端通讯软件。
什么是套接字(Socket)?
Network API是典型的用于基于TCP/IP网络Java程序与其他程序通讯,Network API依靠Socket进行通讯。Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中。如图1
我们来分析一下图1,Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的网络接口卡发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
流套接字(Stream Socket)
无论何时,在两个网络应用程序之间发送和接收信息时都需要建立一个可靠的连接,流套接字依靠TCP协议来保证信息正确到达目的地,实际上,IP包有可能在网络中丢失或者在传送过程中发生错误,任何一种情况发生,作为接受方的 TCP将联系发送方TCP重新发送这个IP包。这就是所谓的在两个流套接字之间建立可靠的连接。
InetAddress类
由于InetAddress类只有一个构造函数,而且不能传递参数,所以不能直接创建InetAddress对象,比如下面的做法就是错误的:
[object htmlImageElement]
但我们可以通过下面的5个工厂方法创建来创建一个InetAddress对象或InetAddress数组:
InetAddress ia = InetAddress.getByName ("www.javajeff.com"));
// InetAddressDemo.java
import java.net.*;
class InetAddressDemo
{
public static void main (String [] args) throws UnknownHostException
{
String host = "localhost";
if (args.length == 1)
host = args [0];
InetAddress ia = InetAddress.getByName (host);
System.out.println ("Canonical Host Name = " +
ia.getCanonicalHostName ());
System.out.println ("Host Address = " +
ia.getHostAddress ());
System.out.println ("Host Name = " +
ia.getHostName ());
System.out.println ("Is Loopback Address = " +
ia.isLoopbackAddress ());
}
}
当无命令行参数时,代码输出类似下面的结果:
Canonical Host Name = localhost
Host Address = 127.0.0.1
Host Name = localhost
Is Loopback Address = true
优效程序员
java、java架构师
大数据
文章/视频/等你
以上是关于Socket套接字—Java套接字编程的主要内容,如果未能解决你的问题,请参考以下文章
网络编程 ———— Java Socket(UDP/TCP 套接字)
Java网络编程-第二节:套接字(Socket)编程基本概述