Java网络编程
实现基于TCP协议的Socket编程
- 关键步骤如下:1. 两个端点进行连接。2.打开传递信息的输入/输出流。3.传递数据、接收数据。4.关闭连接
认识Soket
- Socket概述
- Java最初是作为网络编程语言出现的,它对网络的高度支持,使得客户端和服务器端流畅的沟通变成现实。而在网络编程中,使用最多的就是Socket,每一个实用的网络程序都少不了它的参与。
- 在计算机网络编程技术中,两个进程或者说两台计算机可以通过一个网络通信连接实现数据的交换,这种通信链路的端点被称为“套接字”(英文名称也就是Socket),Socket是网络驱动层提供给应用程序的一个接口或者说一种机制。
- Socket通信原理
- 对于编程人员来说,无须了解Socket底层机制是如何传送数据的,而是直接将数据提交给Socket,Socket会根据应用提供的相关信息,通过一系列计算,绑定IP及信息数据,将数据交给驱动程序向网络上发送。
- java.net包
- java.net包中常用的类有Socket、ServerSocket、DatagramPacket、DatagramSocket、InetAddress、URL、URLConnection和URLEncoderdeng
- 为了监听客户端的连接请求,可以使用SeverSocket类。Socket类实现用于网络上进程间通信的套接字。DatagramSocket类使用UDP协议实现客户端和服务器套接字。DatagramPacket类使用DatagramSocket类的对象封装设置和收到的数据报。InetAddress类表示Internet地址。在创建数据报报文和Socket对象时,可以使用InetAddress类。
基于TCP协议的Socket编程
java.net包的两个类的Socket和ServerSocket,分别用来实现双向安全连接的客户端和服务端,他们是基于TCP协议进行工作的,它的工作过程如同打电话的过程,只有双方都接通了,才能开始通话。
进行网络通信时,Socket需要借助数据流来完成数据的传递工作。如果一个应用程序要通过网络向另一个应用程序发送数据,只要简单地创建Socket,然后将数据写入到与该Socket关联的输出流即可。对应的,接收方的应用程序创建Socket,从相关联的输入流读取数据即可
注意:2个端点在基于TCP协议的Socket编程中,经常一个作为客户端,一个作为服务端,也就是遵循client-serve模型
-
Socket类对象在客户端和服务器之间建立连接。可用Socket类的构造方法创建套接字,并将此套接字连接至指定的主机和端口。以下时与此Socket对象关联的构造方法和一些常用方法。
-
构造方法
-
第一种构造方法以主机名和端口号作为参数来创建一个Socket对象。
Socket s=new Socket(hostName,port); //另一种构造方法以InetAdress对象和端口号作为参数来创建一个Socket Socket s=new Socket(address,port);
-
-
Server Socket类
- ServerSocket对象等待客户端建立连接,连接建立以后进行通信
-
构造方法
-
可用的构造方法有两种。第一种接收端口号作为参数创建ServerSocke对象。
ServerSocket ss=new ServerSocket(port);
-
另一种接受端口号和最大队列长度作为参数,队列长度表示系统在拒绝连接前可以拥有的最大客户端连接数
ServerSocket ss=new ServerSocket(port,maxqu);
-
- 常用方法
- Socket类中列出的常用方法也适用于ServerSocket类。此外,ServerSocket类具有accept()方法,此方法用于等待客户端发起通信,这样Socket对象就可用于进一步的数据传输。