只有11个豆了=v=都给你们。
总赶脚web开发是一片太不一样的世界。
HTML,css什么的都还好说,就是推荐使用的文档规范嘛,浏览器的区别什么的,也都还理解,就是大家对文档流的解析方式不一样嘛。
HTTP也都还好说,就是把各种内容打了个包,按某种规则组合成数据包,使用TCP(HTTP用的是tcp吧?)完成通信。。。的那个规则就是http。
但是那些各种奇怪的脚本是什么意思?哪里来的?
再比如,桌面程序如果访问一个文件,那起码知道要文件操作;如果是web要访问一个文件。。首先访问本地文件是没多大意义的所以得访问的是服务器的文件,所以浏览器得用http告诉服务器我要访问xx.txt,然后服务器不是还得有个东东(脚本?http解析器?-v-)来响应,然后找到这个txt,然后还得发送文件给浏览器(有种草泥马奔腾的赶脚),然后浏览器收到了以后,浏览器它用的神马东西在读txt啊?(不是c函数也不是win32api对吧。-v-)
……
完全摸不到路子的赶脚,求点醒。
用C/C++作web开发, 首先要了解浏览器 -> web服务器间的运作关系, 如下图:
核心就是网站服务器程序, Web Services, 网站服务器需要监听一个端口, 常见也是默认的就是80端口, 当用户浏览器向服务器xxx.xxx.xxx.xxx发起请求时, 网站服务器程序就能监听到用户web服务的请求, 浏览器向服务器发起请求时肯定要包含相应的请求内容, 请求内容必须要按照一定的格式来写, 被称为"http请求头", 当然, 发送请求这是浏览器的事了, 网站服务器解析请求头的内容, 来决定回应的信息, 回应的信息也是按照一定得格式来回应的。这是早起的一遍HTTP服务过程。
到后来, web服务快速发展, 这种方法已经不能满足动态页面得需要了, 于是就诞生了CGI, 网站服务器解析到请求后与本机的CGI程序进行通信, 由CGI程序决定返回什么内容, CGI可用很多语言来写, 早期通常使用C语言来写, 因为C语言具有很强的夸平台性, 再到后来, 才出现了PHP、asp、jsp等这样的专门为web服务器所写的脚本语言来代替早期的CGI程序。
楼主说到双方怎么读取信息的问题, 要记住, 无论何时, 想要正确表现信息的内容, 双方都要遵循一定得协议/标准, 在浏览器端, 浏览器就是根据解析HTML内容做信息, CSS做信息呈现的样式, js为网页上的动作来将网页表现出来, 如果不按照这些已规定的协议/标准来, 那么双方都不能正确理解对方的意思, 也就谈不上进行通信了。就像IE6, 他就掉炸天的不遵循相关的标准, 到后来你看看成什么样了, 你写点CSS往IE6里一放他就有可能给你黑出鲜祥来, 这就是活生生的例子啊。不过也不能怪人家IE6, 也是有商业原因搁里面作怪。
那么C/C++程序员如何快速上手web开发, 一是入乡随俗, 学习PHP、asp或jsp等其中的一种作为后端逻辑处理程序, 如果确实不想学习这些, 那么你就拿C/C++来写成CGI程序给web服务器程序调用; 再掉炸天点, 你说我连web服务器程序都不想安装, 那么你完全可以自己写个web服务器程序来处理用户的HTTP请求, 真正做到随心所欲, 而且绝对掉炸天的可以吓尿一大篇。不骗你。
油然一种会c/c++很高级的赶脚!如无意外,朕的10分赏你了。
木木做前端吗?
从来没做过web。好奇=v=
别光提问啊。。给婶儿说说。。。
我觉得从桌面程序员到Web程序员面临的最大一个障碍是HTTP协议是无状态的。
还有一点就是请求/响应模型,由浏览器发出请求,服务器作出响应;然后浏览器再发请求,然后服务器再响应。。。
我建议先了解HTTP的工作原理。
嗯,有价值。
浏览器它用的神马东西在读txt啊? 这个问题的答案是神马?
@mumuliang: 不是浏览器在读,浏览器只是一个user和server的coordinator,请求到服务器以后读txt和之前的桌面程序应该就一样了。对于http请求的解析现在都有很好的封装,说实话再底层的东西我就不了解了。。。一次http请求的过程我现在还处在感性的认识层面。
@mumuliang:
浏览器收到的是一个文件流,如何处理这个文件流是浏览器内部实现的事。
@dudu: 酱紫。
@大X: 收到请求的服务器端,是可以理解成雷同桌面程序。“都有很好的封装”的意思是不是说,比如ror就封装了,比如asp.net也封装了。。比如jquery也是。。这个意思。
@mumuliang: windows web程序来说,浏览器先把请求发给iis,iis再把请求给asp。net管道,这里微软做了封装,陈序员可以通过其api很容易的访问当前http请求的内容,比如,闯过来的数据,参数,比如你要求服务器读取txt,你肯定穿了参数,比如文件名字,路径等,然后就应该和桌面一样了,读呗,读完之后你可以把数据通过asp。net的api闯给asp.net管道,然后iis,然后浏览器,用户。这是我比较感性的认识。
@大X: 你这感性的认识很易懂。
对了,先搞点分再说,必须给我园豆~
有你的有你的
楼主的思维好有意思。第一次看到可以这样去理解web.
你之前不是做桌面程序的嘛,应该对浏览器这种程序很明白它的原因。浏览器是通过http协议工作的。http再低层点就是socket。浏览就是通过socket流读取文件的。
@angelshelter: 嗯。到这一步我都还能理解。后面就。。。
>>浏览器它用的神马东西在读文件啊?
为什么一定要有文件的概念呢。 又不是FTP。
HTTP只要有请求有响应就行, 你管他是不是文件呢。
你用ipad的时候不也一样么。 知道哪个app能干什么事情就够了。干嘛一定要知道文件在哪, 以及如何读取呢。
所以http其实收到的时候已经是它想要的字符串了的意思对不?
大牛,Java 的开发效率究竟比 C++ 高在哪里?
人们的惯常认识是"C++的运行效率高而Java的开发效率高(相对而言)"。但在某些场景下Java的性能已经不输C++,有的即使落后但是差距也不大。而现代C++有了更多方便的语法和工具,开发效率也有了提高。
那么请问在开发效率上Java比C++高在哪些地方呢?
C++是面向内存编程,Java是面向数据结构编程。
C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候再崩给你看。
Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。
Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。
C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万一新来的神比较愣,手一滑,宇宙就退出了。
新手写C++,像是抱着一捆指针,在浩瀚的内存中裸奔。跑着跑着,有的针掉了,不知踪影,内存就泄露了;跑着跑着,突然被人逮住,按在地上打的error纷飞,内存就越界了;终于到了,舒了口气,把针插在脚下,念出咒语,
“delete”
系统就崩溃了。
浏览器是一个应用程序而已。 你自己写个应用程序怎么显示文件?