直接远程到服务器上写代码有什么好处?

直接远程到服务器上写代码有什么好处?,第1张

本系列教程将和您一起探讨如何利用Java语言一步一步实现自己的web服务器

1需求描述

第1讲我们要实现的效果是:当我们在浏览器的地址栏输入localhost:8080的时候,我们会看到"hello,this is my web server!"。如下:

2实现

做任何事情都不能太急,对于编程来说也不例外。以上的案例虽然简单,但却是我们编写web服务器的非常关键的一步,麻雀虽小,五脏俱全。

21基础知识

首先我们来分析一下,为了实现上面的功能,我们需要具备哪些基础知识。

1)CS架构介绍

CS架构是一种非常常见的软件架构,主要由两部分组成:客户端和服务器端即C端和S端。

图2-1 CS架构

其一般的交互流程为:客户端发送一条请求给服务器,服务器在收到请求后,解析处理该请求,并将结果以响应的方式返回给客户端。

那么在我们要要实现的需求中,客户端特定为浏览器,请求特指http请求,响应特指http响应。

一般情况CS架构的软件,我们需要分别开发C端和S端的程序,但是由于本题客户端就是我们日常使用的浏览器,所以我们不需要开发C端程序,所以仅需要开发服务器端程序。

这是我们实现需求需要了解的第一个基础知识。

2)http请求和响应

有了上面的基础知识后,接下来我们需要具体的了解,这个http请求长什么样,http响应长什么样?

下面我们来看一个具体的请求和响应报文的格式:

http请求报文:

GET / HTTP/11Host: wwwbaiducomcnConnection: keep-alivePragma: no-cacheCache-Control: no-cacheUpgrade-Insecure-Requests:1User-Agent: Mozilla/50(Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/53736(KHTML, like Gecko)Chrome/560292487 Safari/53736Accept:text/html,application/xhtml+xml,application/xml;q=09,image/webp,/;q=08Accept-Encoding: gzip, deflate,sdchAccept-Language:zh-CN,zh;q=08,en;q=06,zh-TW;q=04,ja;q=02

http响应报文:

HTTP/11200 OKCache-Control: privateContent-Length:21005Content-Type: text/htmlServer: Microsoft-IIS/70X-Powered-By: ASPNETDate: Tue,07 Mar 201701:59:58GMT

如想了解更多,算法与编程之美公众号的《BS架构基础-http报文》有简单易懂的介绍。

3)Socket编程

有了以上的基础知识之后,我们还需要了解Java在实现CS架构时使用的具体技术,那就是socket编程。socket编程的入门其实并不难,下面为大家做简要介绍:

- socket编程可以分为两部分,一部分为服务器端的编程,另外一部分为客户端。对于服务器端我们使用ServerSocket类,客户端使用Socket类。

-一旦建立连接后,获取了客户端的socket对象,接下来就可以通过socket对象的InputStream来读取请求,而OutputStream来写响应。

只需要了解上面的两点即可,如想了解更多,算法与编程之美公众号的《Socket编程基础》有简单易懂的介绍。

22实现

有了上面的3个基础知识点后,接下来我们可以开始编程实现了。

主要的业务流程为:

1服务器端利用ServerSocket开启8080端口开始监听;

2当有客户端发起的http请求时,接受该客户端读取http请求,进行相关处理;

3返回http响应。

具体的代码实现如下:

public class WebServer {private ServerSocket serverSocket;public WebServer(){ try {//开启8080端口监听 serverSocket = newServerSocket(8080);} catch (IOException e){ eprintStackTrace();}}public void run(){ try { Socket socket =serverSocketaccept();//读取http请求 BufferedReader reader = newBufferedReader(new InputStreamReader(socketgetInputStream())); String line = null; while (!(line =readerreadLine())equals("")){ Systemoutprintln(line);} //返回http响应 PrintWriter writer = newPrintWriter(socketgetOutputStream()); writerprint("HTTP/11200OK\\r\\n"); writerprint("\\r\\n"); writerprint("hello, thisis my web server!"); writerflush(); socketclose();} catch (IOException e){ eprintStackTrace();} }public static void main(String[] args){ new WebServer()run();}}

3总结

我们已经按照需求实现了相关功能,但是细心的你可能会发现以下的问题:

1)浏览器刷新一次,服务器端程序就终止了;

2)这个服务器能不能作为静态网页html服务器呢?

3)。。。

如想了解更多,欢迎关注“算法与编程之美”公众号将持续为您带来更多精彩内容。

问题一:手机无法连到服务器是怎么回事? 手机连接不到服务器请尝试以下操作:

1 进入移动网络设置--接入点名称--按功能键--重置为默认设置

2 检查网络状态,寻找网络信号较好的区域再次登录人人软件。

3 进入个人手机设置,尝试清除上网缓存数据。有部分原因是手机的缓存数据过多影响网络速度造成连接服务器超时。

4、如果还是无法连接到服务器,那就是当地网络问题,请稍后再试。

问题二:如何利用手机连接服务器 首先确保手机和电脑使用的是一个无线网。第二,在手机浏览器的地址栏中输入电脑的ip地址!假如:你的电脑ip地址是:192168199211,就在手机浏览器地址栏中输入:192168199211后面加上你要查看的路径 就ok了

回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !

问题三:手机无法连接到服务器怎么弄 在高级设置中,将“使用静态IP”后面的勾去掉,什么问题都解决

问题四:手机无法连接到服务器是什么意思 软件里要进行连接设置吧,选定一个连接

问题五:手机无法连接到服务器 尝试以下步骤操作:

1、检查SIM卡是否开通GPRS上网业务。

使用手机数据上网功能,电话卡需开通数据流量上网业务。可以联系电话卡当地的网络供应商,开通数据流量上网业务。

2、检查“移动数据”开关是否开启。

用手指向下滑动屏幕顶帘,向左滑动快捷栏,把“移动数据”点为绿色。

3、重置上网参数。

在待机模式下,选择应用程序-设定-连接-更多设置-移动网络-点击接入点名称-菜单-重置为默设置-设置完成后,重启手机即可进行上网。

注意:如果使用的移动卡不支持NET业务,可以选择WAP接入点。

如重置上网参数后仍无法上网,可以尝试新建APN:

新建“APN”

输入如下参数:

名称:随意填写

APN:cmwap(移动卡)/uniwap(联通卡)/3gwap(3G卡)

代理:1000172

端口:80

其他无需设置,最后按“菜单键(左触摸感应按键)-储存保存。

4、请您更换其它电话卡尝试

5、也可以换个时间段或网络环境再尝试。

6、备份手机数据(电话簿、短信、等),将手机恢复出厂设置

若故障依旧,建议将手机送至就近的服务中心进行检测维修。

问题六:手机怎么连接服务器 手机或平板电脑连接无线网络方法:

1下滑屏幕顶帘-点击WLAN图标,图标变绿代表无线网络功能已经开启。

2长按WLAN图标进入WLAN设置界面,开启无线网络后手机自动搜索显示可连接的无线网络名称,点击要连接的无线网络名称-输入密码-点击连接即可。

问题七:手机总是显示无法连接到服务器 这种情况一般来说不是电脑也不是网络出现了问题,而是你的手机权限管理中,(应该是在手机卫士之类的软件中把WIFI点成了勾状态!把2G/3G点成了X状态)――禁止了微信等软件通过2G/3G数据上网。所以wifi状态下是可以上网的。反之,在WIFI状态下不可以上网,在2G/3G下又可以上网!在手机安装腾讯手机管家或360手机卫士。比如在360卫士中点常用功能-话费流量-软件流量管理-可联网软件列表后面的数据网络和WIFI两个小框,都打上勾,下面的所有软件名后面的两个框也都打上勾!这样所有软件就都可以既通过2G/3G又可以通过WIFI上网了!我也是遇到同样问题,记得在哪里点了啥勾勾叉叉的,最后记起来了后修改就成功了!

问题八:为什么我的手机显示无法连接到服务器 您好:

若手机显示已连接无线网络,但是依然无法上网,建议您:

1把手机关机重启、路由器复位,然后重新连接无线网络。

2请确认路由器的传输带宽(支持80211n的路由器支持的带宽为40mhz,建议设置为20mhz),再次确认路由器网络是否正常。

3确认路由器中是否设置了IP地址过滤/MAC地址过滤。

4如果仍然不能WLAN上网,建议尝试使用静态IP。方式:设定-(连接)-WLAN-选择一个无线热点-显示高级选项-打钩-向下滑动屏幕-IP设定-静止-IP地址/网关。

5连接其他路由器尝试尝。

6备份手机重要数据后恢复出厂设置尝试

问题九:为什么手机WIFI显示已连接,但是手机显示无法连接服务器 你好,打开手机WIFI,在设置――WLAN――选择需要的WIFI名称,点进去后输入密码即可上网。

如果不能连接,是在家里上网要排除是否为路由器、网络、距离等问题。

建议和另外一部手机或电脑同时连接无线网、或者换一个无线网络试试。一定要在手机无线网信号很强的情况下测试。

如果排除了上述原因,建议备份后送到售后检测一下,很可能是无线接收芯片坏了。 网友推荐

追问

谢谢你的回复,根本不是手机的问题。肯定是电脑,我手机上别人家的正常。因为总有人玩电脑,可能把哪里改动展开>

热心网友 | 2014-03-02

0

0

这个问题经常发生,有时是服务器的问题,多试几次就可以了,如果不是,有几种方法。

1。请仔细检查您的计算机的日期是正确的,要特别注意的时区是北京的时区。

2。转让电脑的时间前一个月,如果还不够,也许,我不得不渡过这个。

3。网络不稳定,重新启动的路线或东西。

追问

你的回答我在百度已经搜到过一百次了

热心网友 | 2014-03-02

0

1

手机和电脑都要设置wifi热点,在项目前打勾

热心网友 | 2014-03-02

1

0

按住路由后面的右键,重启

追问

重启不好使

回答

那就不知道了,我的重启就好了,另外还有设置里找

那就不知道了,我的重启就好了,另外还有设置里找

热心网友 | 2014-03-02

0

0

关机重启

追问

不好使的

回答

欢路由器试试

问题十:手机无法连到服务器是怎么回事 您好:

根据您描述的情况,wlan不能正常连接,建议您:

1查看手机是否可以正常搜索到无线信号,长按住选择忘记,重新连接尝试;

2如果有密码输入,检查是否输入正确的连接密码(8位或8位以上)

3如果不能连接,建议您查看路由器设置,MAC地址过滤,DHCP功能是否开启,关闭重启路由器尝试;

4若问题依然存在,建议您升级路由器后尝试连接;

5如果依然没有恢复,需要您更换路由器重新连接;

,只要在浏览器的地址栏里输入网站的地址就可以了,例如,但是在浏览器的地址栏里面出现的却是: ,你知道为什么会多出一个“http”吗?

一、HTTP协议是什么

我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如:。它的含义如下:

1 :代表超文本传输协议,通知microsoftcom服务器显示Web页,通常不用输入;

2 www:代表一个Web(万维网)服务器;

3 Microsoftcom/:这是装有网页的服务器的域名,或站点服务器的名称;

4 China/:为该服务器上的子目录,就好像我们的文件夹;

5 Indexhtm:indexhtm是文件夹中的一个HTML文件(网页)。

我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。

HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以开头的原因。

自WWW诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。经过几年的使用与发展,得到不断的完善和扩展,目前在WWW中使用的是HTTP/10的第六版。

HTTP是怎样工作的

既然我们明白了URL的构成,那么HTTP是怎么工作呢?我们接下来就要讨论这个问题。

由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。

这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。

以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。

在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。

其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。

也就是说商家除了拥有商品之外,它也有一个职员在接听你的电话,当你打电话的时候,你的声音转换成各种复杂的数据,通过电话线传输到对方的电话机,对方的电话机又把各种复杂的数据转换成声音,使得对方商家的职员能够明白你的请求。这个过程你不需要明白声音是怎么转换成复杂的数据的。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

POP3(Post Office Protocol 3)即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。

服务器收到客户端数据包确认后返回,是因为在网络通信中,数据传输可能会出现丢包、延迟等问题,因此发送方需要确认接收方是否已经正确地接收了数据,以保证数据的可靠性和完整性。客户端发送数据包后,等待服务器的确认消息,如果服务器收到了数据包并正确处理了该数据包,服务器会返回确认消息,通知客户端数据包已经被正确地接收和处理。这样,客户端才能继续发送下一个数据包,从而保证数据传输的顺畅和正确性。

在实际的网络通信中,数据包确认机制是一种常见的网络协议,如TCP协议就是使用数据包确认机制来保证数据的可靠性和完整性。在TCP协议中,每个数据包都会被分配一个序号,接收方在接收到数据包后,会返回一个确认消息,确认已经正确地接收到该数据包,并告诉发送方下一个期望接收的数据包序号。如果发送方在一定时间内没有接收到确认消息,就会重新发送该数据包,直到接收方正确地接收到该数据包,并返回确认消息为止。

数据包确认机制的实现可以有效地保证数据传输的可靠性和正确性,但同时也会带来一定的延迟和额外的网络开销。因此,在设计网络通信协议时,需要根据实际的应用场景和需求,权衡可靠性和效率之间的关系,选择合适的协议和机制。

今天远程连接服务器的时候提示

中断远程桌面连接

  ---------------------------

  由于协议错误,客户端无法连接到远程计算机。

  请请重新连接到远程计算机。如果客户端依旧无法连接,请跟网络管理员联系。

用远程桌面连接服务器时报错:由于协议错误,会话将被中断。请重新连接到远程计算机。

  本以为是服务器的一般性错误,以为重新启动一下服务器就能解决问题,于是让机房重启了一下服务器。可无论怎么试问题仍旧,再用其它电脑试连接,还是一样的问题,无奈只好让人去机房装了个pcAnywhere不甘心用PCA,毕竟WINDOWS自带的远程桌面使用起来还是方便许多,于是用PCA登录到服务器上仔细检查。

终于在在系统日志里发现错误:终端服务器授权宽限期已过,服务尚未跟有许可证的许可证服务器注册。要继续操作,需要有一个终端服务器许可证服务器。如果没有许可证服务器,终端服务器可以在第一次启动之后运行 120 天。

这才想起服务器当时不是自己装的系统,可能是安装系统的人把“终端服务器组件”安装了,这个服务是需要MS授权的,一般使用系统的“远程桌面”就行,远程桌面最多同是登录两个远程用户,而“终端服务器组件”可以多个用户,不过两个远程用户一般来说完全够了,终端服务器只能使用120天,120天后就需要注册了。

于是卸载终端服务(控制面板--添加或删除程序--添加或删除WINDOWS组件--取消“终端服务器”及“终端服务器授权”),再重启电脑再开启远程桌面(我的电脑--属性--远程--勾选“启用这台计算机的远程桌面”),重新连接可怎么试还是报同样的错。再从网上查找各种解决方法都不行。

正准备放弃时,突然想到既然是报“协议错误”,如果修改远程的端口会不会解决问题呢,再试试。。。打开注册表,修改[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp] 下的PortNumber为需要的端口,再修改[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp] 下的PortNuber(这一步很关键,正常情况下注册表中有RDP-Tcp文件夹,可现在服务器上却没有这个文件夹,于是在其它电脑上导出注册表的这一部份,再导入此服务器),修改PortNuber端口号,重启服务器,终于熟悉的登录界面又出现了。。。。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 直接远程到服务器上写代码有什么好处?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情