快速业务通道

用Java Socket开发支持上千个并发的小型服务器(上) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
它们提供了一般称为服务的附加功能。服务的例子有:电子邮件、远程登录的Telnet、和通过网络传输文件的文件传输协议(FTP)。每种服务都与一个端口相联系。端口是一个数值地址,通过它来处理服务请求(就象请求Web页一样)。

TCP协议需要两个数据项:IP地址和端口号。因此,当键入http://www.jinnuo.com时,你是如何进入金诺的主页呢?

因特网协议(IP)提供每一项网络设备。这些设备都带有一个称为IP地址的逻辑地址。由因特网协议提供的IP地址具有特定的形式。每个IP地址都是32位的数值,表示4个范围在0到255之间的8位数值金诺已经注册了它的名字,分配给http://www.jinnuo.com的IP地址为192.168.0.110。

注意:域名服务或DNS服务是将http://www.jinnuo.com翻译成192.168.0.110的服务。这使你可以键入http://www.jinnuo.com而不必记住IP地址。想象一下,怎么可能记住所有需要访问的站点的IP地址!有趣的是一个网络名可以映射到许多IP地址。对于经常访问的站点可能需要这一功能,因为这些站点容纳大量的信息,并需要多个IP地址来提供业务服务。例如:192.168.0.110的实际的内部名称为http://www.jinnuo.com。DNS可以将分配给jinnuoLtd.的一系列IP地址翻译成http://www.jinnuo.com。

如果没有指明端口号,则使用服务文件中服务器的端口。每种协议有一个缺省的端口号,在端口号未指明时使用该缺省端口号。

端口号  应用

21  FTP.传输文件

23  Telnet.提供远程登录

25  SMTP.传递邮件信息

67  BOOTP.在启动时提供配置情况

80  HTTP.传输Web页

109  POP.使用户能访问远程系统中的邮箱

让我们再来看一下URl :http://www.jinnuo.com

URL的第一部分(http)意味着你正在使用超文本传输协议(HTTP),该协议处理Web文档。如果没有指明文件,大多数的Web服务器会取一个叫index.html文件。因此,IP地址和端口既可以通过明确指出URL各部分来决定,也可以由缺省值决定。

用Java Socket开发支持上千个并发的小型服务器(上)(3)

时间:2010-04-15

4 创建Socket客户

我们将在本部分讨论的示例将阐明在Java代码中如何使用Socket和ServerSocket。客户机用Socket连接到服务器。服务器用ServerSocket在端口1001侦听。客户机请求服务器C:驱动器上的文件内容。

创建RemoteFileClient类

1.import java.io.*;2.import java.net.*;3.public class RemoteFileClient {4.    protected BufferedReader socketReader;5.    protected PrintWriter socketWriter;6.    protected String hostIp;7.    protected int hostPort;8.    //构造方法9.    public RemoteFileClient(String hostIp, int hostPort) {10.        this.hostIp = hostIp;11.        this.hostPort=hostPort;12.    }13.    //向服务器请求文件的内容14.    public String getFile(String fileNameToGet) {15.        StringBuffer fileLines = new StringBuffer();16.        try {17.            socketWriter.println(fileNameToGet);18.            socketWriter.flush();19.            String line = null;20.            while((line=socketReader.readLine())!=null)21.                fileLines.append(line+"\n");22.        }23.        catch(IOException e) {24.            System.out.println("Error reading from file: "+fileNameToGet);25.        }26.        return fileLines.toString();27.    }28.    //连接到远程服务器29.    public void setUpConnection() {30.        try {31.            Socket client = new Socket(hostIp,hostPort);32.            socketReader = new BufferedReader(new Inpu

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