快速业务通道

Java网络编程之传输控制协议 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
器套接字的地址,在多地址计 算机中(例如某个计算机的本地主机可以通过两个或多个IP地址访问)它可能与 本地地址不同。

· int getLocalPort()--返回服务器套接字绑定到的端口号。

· int getSoTimeout()产生java.io.IOException异常--返回超时套接字选 项的值,该值决定accept()操作可以阻塞多少毫秒。如果返回的值为零, accept()操作无限期阻塞。

· void implAccept(Socket socket)产生java.io.IOException异常--这个 方法允许ServerSocket子类传递一个未连接的套接字子类,让这个套接字对象接 受输入的请求。使用implAccept方法接受连接时,重载的ServerSocket.accept ()方法可以返回已连接的套接字。很少开发者希望对ServerSocket再细分类,在 不必要的情况下应该避免使用它。

· static void setSocketFactory ( SocketImplFactory factory )产生 java.io.IOException、java.net.SocketException、 java.lang.SecurityException异常--为JVM指定服务器套接字产生组件。它是一 个静态的方法,在JVM的生存周期中只能调用一次。如果禁止指定新的套接字产 生组件,或者已经指定了一个,就会产生异常。

· void setSoTimeout(int timeout)产生java.net.SocketException异常-- 为accept()操作指定一个超时值(以毫秒计算)。如果指定的值是零,超时设置 就被禁止了,该操作将无限制阻塞。但是,如果允许超时设置,在accept()方法 被调用的时候就启动一个计时器。当计时器期满时,产生 java.io.InterruptedIOException异常,并允许服务器程序执行进一步的操作。

3、从客户端接受和处理请求

服务器套接字的最重要的功能是接受客户端套接字。一旦获取了某个客户端 套接字,服务器就可以执行服务器程序的所有"真实的工作",包括从套接字读取 信息、向套接字写入信息以实现某种网络协议。发送或接收的准确数据依赖于该 协议的详细情况。例如,对存储的消息提供访问的邮件服务器将监听命令并发回 消息内容。telnet服务器监听键盘输入并把这些信息传递给一个登陆外壳 (shell),并把输出发回网络客户端。具体协议的操作与网络的相关性很小, 更多的面向编程。

下面的代码片断演示了如果接受客户端套接字,以及I/O流怎样连接到客户端 :

// 执行阻塞的读取操作,读取下一个套接字 Socket nextSocket = someServerSocket.accept(); // 连接到流的过滤器读取和写入程序 BufferedReader reader = new BufferedReader (new InputStreamReader (nextSocket.getInputStream() ) ); PrintWriter writer = new PrintWriter( new OutputStreamWriter (nextSocket.getOutputStream() ) );

从这个时候开始,服务器程序就可以处理任何需要完成的事务并响应客户端 请求了,或者可以选择事务给另一个线程中的代码运行。请记住与Java中的其它 形式的I/O操作类似,从客户端读取回应的时候代码会无限制阻塞--因此为了为 多个客户端并行服务,必须使用多线程。但是在简单的情形中,多个执行线程可 能是不必要的,特别是在对请求响应迅速并且处理时间很短的情况下。

建立完整实现通用Internet协议的客户端/服务器应用程序需要作大量的工作 ,对于网络编程的新手来说这一点更为明显。它也需要其它一些技巧,例如多线 程编程。从现在开始,我们聚焦于一个简单的、作为单线程应用程序执行的TCP 服务器程序框架。

Java网络编程之传输控制协议(10)

时间:2010-12-16 天极 陶刚

七、建立TCP服务器程序

网络编程的最有趣的部分之一是编写网络服务器。客户端发送请求并响应发 回来的数据,但是服务器执行大多数真正的工作。下面的例子是一个daytime( 日期时间)服务器(你可以使用上面描述的客户端测试它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号