日期:2014-05-20  浏览次数:20858 次

socket和servlet有什么异同
最近一边在看socket,一边看servlet,感觉这两个好像啊。都能实现客户端和服务器的通信。请问它们之间有什么异同吗?

------解决方案--------------------
servlet不是服务端的后台吗……为了实现动态网页而推出的,所以提供的很多方法都和相应网页浏览时的请求有关。servlet不直接建立连接,它通过服务器获得请求,生成响应后再通过服务器传送出去。
------解决方案--------------------
servlet 不建立连接,仅仅是处理http请求的内容。 所有的输入输入输出电文都由applicationserver 进行处理。到servlet时,已经转换成对象了。属于应用层的东西。

socket 需要自己建立连接,自己分析输入电文构造输出电文。 

简单的说吧,socket努力点可以自己做一个applicationServer出来,而servlet没有applicationServer根本不能跑(UT除外)。
------解决方案--------------------
两个东西不具有可比性.
为了理解,你可以尝试为这两个词组词.
比如通常我们会说"socket连接",也就是说socket是指明两个地址的连接通讯方式.和socket关联的东西大多是服务器,客户端,TCP,UDP,字节流之类的.
而servlet我们会说使用"servlet技术"或"servlet方式",也就是服务器响应客户端的方式,与servlet关联的东西大多是web服务器,浏览器,jsp,asp,asp.net等.
------解决方案--------------------
#4,#5根本胡说八道

Socket是j2se在网络编程这块最基本的东西。把一系列网络io复杂性封装。但是光有io,光能传输数据,不足以完成标准化的网络通信。所以在这个基础上,加入了协议支持。比如web容器(tomcat等)加入了http协议的解析(所谓的协议,就是一系列带有标准格式的字符串)。而把里面可以独立给程序员的模型接口抽取出来,就是Servlet。所以,Servlet可以看做是web容器运行的一部分逻辑(请求和响应,即request和response其实可以看成是dto,最后执行完servlet.service方法后,由容器传递给socket类的outputstream,完成相关操作)。而Socket则是web容器的核心(负责交换协议)。
------解决方案--------------------
唉,肯定是半路出家
socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。
Java通过Native API也有类似的实现:java .net.Socket
而所说的Servlet只是让你编写Java web的以Template来表示的一个接口规范,当然,你可以完全用Java Socket来实现自己的一套。Servlet中你的request及response最后都是通过网络传输。