和同学聊天时提到了servlet和socket,感觉不太明白,就把它俩重新整理了一下。
socket
socket(套接字)的翻译是“孔”或“插座”。是使用TCP/IP或者UDP协议在服务器与客户端之间进行传输(指明两个地址的连接通讯方式:IP地址、端口)的技术。它自己建立连接,是网络编程的基础。
与之相关的是服务器、客户端、TCP/IP、UDP、字节流等。
Java通过Native API有类似的实现:java .net.Socket。
socket使用
//服务端
SocketService socketService = new SocketService(xxxx);
Socket socket = socketService.accept();
//客户端
Socket socket = new Socket("127.0.0.1" ,xxxx);
servlet
servlet是server applet的缩合词。是在编写Java web的以Template来表示的一个接口规范。使用HTTP协议在服务器与客户端之间通信(处理request和response)的技术。它不建立连接,属于应用层,是socket的一种应用。
与之相关的是web服务器、浏览器、jsp,asp,asp.net等。
servlet使用
@GetMapping("/me")
public Teacher me(HttpServletResponse httpServletResponse) {
Teacher teacher = new Teacher();
try {
teacher = teacherService.me();
} catch (AuthException e) {
httpServletResponse.setStatus(HttpStatus.UNAUTHORIZED.value());
}
联系
servlet可以看做是web容器运行的一部分逻辑,执行完servlet.service方法后,由容器传递给socket类的outputstream,完成相关操作。
所有输入输出都由applicationServer 进行处理。到servlet时,已经转换成对象了。
而socket 需要自己建立连接,自己分析输入电文构造输出电文。 因此,socket可以自己做一个applicationServer,而servlet没有applicationServer不能跑。