所谓socket一般也称做“套接字”,应用程序一般经过“套接字”向网络发出请求或者应答网络请求。java
双方通话的过程,是一方向电话机发出信号和对方电话机接收信号的过程,至关于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机至关于关闭socket,撤销链接。服务器
在电话系统中,通常用户只能感觉到本地电话机和对方电话号码的存在,创建通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与socket机制很是类似。socket利用网间网通讯设施实现进程通讯,但它对通讯设施的细节绝不关心,只要通讯设施能提供足够的通讯能力,它就知足了。网络
抽象出来,socket实质上提供了进程通讯的端点。进程通讯以前,双方首先必须各自建立一个端点,不然是没有办法创建联系并相互通讯的。正如打电话以前,双方必须各自拥有一台电话机同样。在网间网内部,每个socket用一个半相关描述:(协议,本地地址,本地端口)socket
服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是出于等待链接的状态,实时监控网络状态。spa
客户端请求:是指由客户端的套接字提出链接请求,要链接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要链接的服务器的套接字,指出服务器端套接字的地址和端口号,而后就向服务器端套接字提出链接请求。操作系统
链接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的链接请求,它就响应客户端套接字的请求,创建一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,链接就创建好了。而服务器端套接字继续处于监听状态,继续接收其余客户端套接字的链接请求。.net
服务器:使用ServerSocket监听指定的端口,端口能够随意指定(因为1024如下的端口一般术语保留端口,在一些操做系统中不能够随意使用,因此建议使用大于1024的端口),等待客户链接请求,客户链接后,会话产生;在完成会话后,关闭链接。线程
客户端:使用Socket对网络上某一个服务器的某一个端口发出链接请求,一旦链接成功,打开会话;会话完成后,关闭Socket。客户端不须要指定打开的端口,一般是临时的、动态的分配一个1024以上的端口。对象
java.net.Socket继承于java.lang.Object,有八个构造器,其方法并很少,下面介绍使用最频繁的三个方法,其余方法你们能够参见JDK文档。继承
Accept方法用于产生“阻塞”,直到接收到一个链接,而且返回一个客户端的socket对象实例。“阻塞”是一个术语,它使程序运行暂时“停留”在这个地方,直到一个会话产生,而后程序继续;一般“阻塞”是由循环产生的。
getInputStream方法得到网络链接输入,同时返回一个InputStream对象实例。
getOutputStream方法链接的另外一端将获得输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法都可能会产生一个IOException,它必须被捕获,由于它们返回的流对象,一般都会被另外一个流对象使用。