快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
)。

DaytimeServer的代码

import java.net.*; import java.io.*; public class DaytimeServer { public static final int SERVICE_PORT = 13; public static void main(String args[]) { try { // 绑定到服务端口,给客户端授予访问TCP daytime服务的权限 ServerSocket server = new ServerSocket (SERVICE_PORT); System.out.println ("Daytime service started"); // 无限循环,接受客户端 for (;;) { // 获取下一个TCP客户端 Socket nextClient = server.accept(); // 显示连接细节 System.out.println ("Received request from " + nextClient.getInetAddress() + ":" + nextClient.getPort() ); // 不读取数据,只是向消息写信息 OutputStream out = nextClient.getOutputStream(); PrintStream pout = new PrintStream (out); // 把当前数据显示给用户 pout.print( new java.util.Date() ); // 清除未发送的字节 out.flush(); // 关闭流 out.close(); // 关闭连接 nextClient.close(); } } catch (BindException be) { System.err.println ("Service already running on port " + SERVICE_PORT ); } catch (IOException ioe) { System.err.println ("I/O error - " + ioe); } } }

DaytimeServer是如何工作的

这是最简单的服务器程序了。这个服务器程序的第一步是建立一个 ServerSocket。如果端口已经绑定了,将会产生一个BindException异常,因为 两个服务器程序不可能共享相同的端口。否则,就建立了服务器套接字。下一步 是等待连接。

因为daytime是个非常简单的协议,并且我们的第一个TCP服务器程序示例必 须很简单,所以我们此处使用了单线程服务器程序。在简单的TCP服务器程序中 通常使用无限运行的for循环,或者使用表达式的值一直为true的While循环。在 这个循环中,第一行是server.accept()方法,它会阻塞代码运行直到某个客户 端试图连接为止。这个方法返回一个表示某个客户端的连接的套接字。为了记录 数据,该连接的IP地址和端口号被发送到System.out。你将看到每次某个人登陆 进来并获取某天的时间。

Daytime是一个仅作应答(response-only)的协议,因此我们不需要担心对 任何输入信息的读取过程。我们获得了一个OutputStream(输出流),接着把它 包装进PrintStream(打印流),使它工作更简单。我们在使用java.util.Date 类决定日期和时间后,基于TCP流把它发送给客户端。最后,我们清除了打印流 中的所有数据并通过在套接字上调用close()关闭该连接。

运行DaytimeServer

运行该服务器程序是很简单的。该服务器程序没有命令行参数。如果这个服 务器程序示例需要运行在UNIX上,你需要把变量SERVICE_PORT的值该为1024,除 非你关闭默认的daytime进程并作为root运行这个示例。在Windows或其它操作系 统上,就没有这个问题。如果需要在本机上运行该服务器程序,需要使用下面的 命令:

java DaytimeServer

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

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

八、异常处理:特定套接字的异常

网络作为通讯的媒介充满了各种问题。随着大量的计算机连接到了全球 Internet,遭遇到某个主机名称无法解析、某个主机从网络断开了、或者某个主 机在连接的过程中被锁定了的情形在软件应用程序的生存周期中是很可能遇到的 。因此,知道引起应用程序中出现的这类问题的条件并很好的处理这些问题是很 重要的。当然,并不是每个程序都需要精确的控制,在简单的应用程序中你可能 希望使用通用的处理方法处理各种问题。但是对于更高级的应用程序,了解运行 时可能出现的特定套接字异常是很重要的。

注意

所有的特定套接字异常都扩展自SocketExcep

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号