java网络编程之服务器套接字

java网络编程之服务器套接字

ID:34614447

大小:454.32 KB

页数:38页

时间:2019-03-08

java网络编程之服务器套接字_第1页
java网络编程之服务器套接字_第2页
java网络编程之服务器套接字_第3页
java网络编程之服务器套接字_第4页
java网络编程之服务器套接字_第5页
资源描述:

《java网络编程之服务器套接字》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章内容:第十一章●ServerSocket类●一些有用的服务器服务器套接字前一章我们从客户机的角度讨论了套接字:打开到正在监听的服务器的套接字。但是,仅有客户机套接字是不够的,如果客户机没有和服务器对话,那么它是没用的。考虑到这一点,我们前一章所讨论的内容用于写服务器程序是远远不够的。为创建Socket,程序员需要知道想要建立连接的Internet主机。在编写服务器程序时不需要提前知道谁会与程序员联系,即使知道是谁,也无法知道他何时想与之建立联系。换句话说,服务器类似于坐在电话机旁边等待呼叫到来的接收者。它们不知道是谁、会在什么时候会打电话来,只有在电话铃声响起的时候才知道有呼

2、叫进来,然后它们拿起电话与不知在何处的人(对方响应之前)进行通话。我们无法编写单独实现Socket类的程序。当然没有任何理由用Java编写的客户程序一定是与Java服务器对话——事实上,客户程序不关心服务器程序是用什么语言编写的,也不关心它具体在哪一种操作平台上运行。但是,如果Java不支持服务器程序的编写,那将是它在功能上令人吃惊的漏洞。幸运的是,Java中不存在这样的漏洞。它提供了一个ServerSocket类,程序员可以很方便地用它编写服务器程序。服务器套接字的基本功能类似于坐在电话机旁边等待呼叫到来。从技术上讲,ServerSocket运行在服务器上并监听到来的TCP连接

3、。每个ServerSocket都在服务器上的指定端口监听。当远程主机上的客户Socket试图与指定端口建立连接时,服务器被激活,判定客户程序与服务器的连接,并打开两个主机之间固有的Socket。一旦与服务器套接字建立了连接,则服务器就可以使用固有的Socket对象向客户机发送数据。数据总是通过固有的套接字传递。369370第十一章ServerSocket类ServerSocket类包含了用Java编写服务器程序的所有内容。它包括创建新ServerSocket对象的构造器、在指定端口监听连接的方法,以及连接建立后可以发送和接收数据时返回Socket对象的方法。此外,它还有设置不同选

4、项以及各种各样常用的方法,例如toString()方法。服务器的基本生命期是:1.利用ServerSocket()构造器在指定端口创建一个新的ServerSocket;2.ServerSocket利用它的accept()方法在指定端口监听到来的连接。accept()方法一直处于阻塞状态,直到有客户机试图建立连接。这时accept()方法返回连接客户机何服务器的Socket;3.调用getInputStream()方法、getOutputStream()方法或者两者都调用来得到与客户机通信的输入流和输出流,具体调用哪一个方法还是两者都调用与具体服务器的类型有关;4.服务器和客户机根

5、据双方都承认的协议进行交互,直到关闭连接时为止;5.服务器、客户机或两者均关闭连接;6.服务器返回步骤2,等待下一个连接到来。如果在第4步花费的时间很长或时间无限期,则wu-ftpd这样的传统Unix服务器会创建一个新的进程来处理每个连接,从而使服务器在同一时刻可以为多个客户机提供服务。Java程序产生一个线程来与客户机发生作用,从而使服务器能很快准备好处理下一个连接。服务器上的线程远比子进程小。事实上,服务器所要处理的进程实在太多,这也就是为什么在没有缓存进行缓冲的条件下,典型的UnixFTP服务器不能处理多于400个连接的原因。另一方面,如果所使用的协议比较简单快速,而且允许

6、服务器在它通过时关闭连接,则对于服务器处理客户机请求来说会更加有效,客户机的请求可以很快得到处理,而不需要再产生线程。操作系统将到来的连接请求放在一个先入先出(firstinfirstout)的队列中,每个请求都寻址到指定端口。队列的默认长度通常为50,但这根据操作系统的不同可以有所变化。有些操作系统(Solaris不是)有一个队列长度最大值限制,典型的值为5。在这些系统上,队列的最大可能长度应该是小于等于50。在未处理的连接的数服务器套接字371目达到队列的最大长度数以后,主机就拒绝在此端口再增加连接,直到队列出现空隙为止。对于许多(尽管不是全部)客户程序来说,如果它们开始的连

7、接请求被拒绝,它们一般都会试着继续建立连接,并进行很多次。对到来的连接和队列的管理由操作系统提供的服务器程序负责,用户程序不需要考虑这些。如果用户认为等待队列的长度不足够大,有几个Socket构造器允许改变队列的长度限制。但是不能在操作系统所支持的最大队列数之外增加新的队列。构造器一共有3个公共的ServerSocket构造器:publicServerSocket(intport)throwsIOException,BindExceptionpublicServerSocket(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。