搭建自己的文档服务器,搭建自己的服务器.doc

搭建自己的服务器

1.网络基础知识

每一台机器都有一个独立的IP地址,以便另外一台机器可以找到它;IP地址在网络中标识一台机器的位置,但是,当A机器与B机器通信时,其实是这两台机器上的程序在通信,A机器上的QQA如想与B机器的上QQB通信时,它还必须知道这个QQB等待在B机器的哪个”端口”上;就像有客人到你家做客,只知道你家在第几幢是不行滴,还得知道是几号---在计算机中,用“端口号”这个数字标识机器上需要通信的某一个程序。

每一台机器都有从0~65535个端口号,其中的每一个数字,可供一个程序通信用,通常情况下0~1024的端口要尽量避免使用---我们称它为知名端口,例如打开网页时,则连结上的是服务器上的80端口,在地址栏不需要输入这个端口号,是因为它是默认的;

要测试服务器上是否开放了某个端口,可以使用telnet命令,连结对方的端口;如果能连结上,则证明对方的端口是打开的,如下示:

我们首先ping 主机,查看网络是否通的,注意,ping命令使用ICMP报文工作在TCP层,ping只能证明网络是否通达,即数据可否传送到指定主机,并不能证明主机上是否开放某个端口,

这个主机上提供的是网站服务,那么它打开的肯定是80端口,接下来我们使用Telnet命令来测试,在命令行输入:

telnet 80

回车后,你如果看到一个全黑的命令行窗口,如下示:

则证明你的机器己经连结上了对方的80端口,在这个黑窗口中随便输入几个字符,你会看到如下图示:

这是因为,服务器上的web服务与客户端通信使用的是http协议,而我们随便发的消息,服务器是不能理解的,所以服务器返回了错误说明,然后断开了与客户端的连结。

事实上,我们的电脑无时不客在背后默默的通信着,当然,这包含你机器上的木马和病毒。

你现在肯定想知道,你的机器正在与哪些机器通着信?这很简单:可以在命令行输入netstat命令查看,常用的是输入netstat -an,如果格式如下图示

这个命令会打印出你机器与其它服务器建立的tcp连结或udp连结信息,输出的数据分为四列,第一列说明是tcp还是udp,第二列说明连结所使用的本地地址,由一个IP和端口组成;第三列说明目标机器的地址,也是由一个IP和端口组成,其中的和指的是本地地址;最后一列,是连结状态的说明,由与只有TCP是面向连结的,所以Proto为tcp的才有state说明,当State为LISTENING时,表示本地打开了端口,例如

表示本地打开了3306端口,但没有任何机器与这引端口相联;

表示我们机器上的1037 端口与09 上的80 端口建立了连结---这是我们刚才telnet的结果。

TIME_WAIT代表一种未知状态,一般指的是己断开的连结。Netstat命令是网络程序员常用的工具,可以方便的查看出机器之间的连结信息。

2.一步一步创建简单服务器:

我们的目地是创建一个简单服务器,能将客户机发来的字符串显示出来,并且再回送给客户机----有必要解解释一下,服务器指的是等待别人来连结的机器;客户机,当然就指的是主动去连结别人的机器了,这就像打电话过程中的主要与被叫的区分一样。

Java中编写网络通信程序,就必须用到包下面的API;创建一个服务器,那是相当的简单。

第一步:在指定端口上创建一个.ServerSocket对象,如下代码:

ServerSocket server=new ServerSocket(9090);

System.out.println("服务器创建成功!"+port);

//在等待客户机连结进入,进入后,生成一个Socket对象

.Socket client=server.accept();

System.out.println("Incoming "+client.getRemoteSocketAddress());

这段代码需要特别注意:调用服务器对象server.accept()方法时,程序就会“阻塞”在这个调用上,或者说”卡”到这里---直到有一个客户机连结上来,这个方法才会返回,返回一个Socket类对象----这个对象就代表了服务器与客户机之间的连结:当你拔通我的手机时,我的机手机中可以理解为存在着一个“通话对象“,就相当于此的client对象;以后我们(服务器)与客户机的通信,就在这个Socket类型的对象client上进行。

第三步:从Socket连结对象上调用方法得到输入输出流:

.Socket client=server.accept();

//从连结对象上得到输入/输出流对象

OutputStream out=client.getOutputStream();

InputStream ins=client.getInputStream();

当你创建在指定端口创建了一个S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值