socket网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Socket连接过程
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
通信原理
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketService {
// 搭建服务器端
public static void main(String[] args) throws IOException {
try {
ServerSocket server = null;
server = new ServerSocket(5209);
// b)指定绑定的端口,并监听此端口。
System.out.println("服务器启动成功");
// 创建一个ServerSocket在端口5209监听客户请求
Socket socket;
PrintWriter writer ;
while(true){
socket = server.accept();
// 2、调用accept()方法开始监听,等待客户端的连接
// 使用accept()阻塞等待客户请求,有客户
// 请求到来则产生一个Socket对象,并继续执行
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
writer = new PrintWriter(socket.getOutputStream());
// 如果该字符串为 "bye",则停止循环
writer.println(getTable());
// 向客户端输出该字符串
writer.flush();
// 5、关闭资源
//writer.close();
}
// writer.close(); // 关闭Socket输出流
//socket.close(); // 关闭Socket
//server.close(); // 关闭ServerSocket
} catch (Exception e) {// 出错,打印出错信息
e.printStackTrace();
}
}
public static String getTable(){
StringBuffer sb = new StringBuffer();
sb.append("<html>");
sb.append("<body>");
sb.append("<hr color='red'>这个表格有一个标题,以及粗边框:</hr>");
sb.append("<table style='border:1px solid #ff0000;width='1600px';border-collapse:collapse;'>");
sb.append("<caption>我的标题</caption>");
sb.append("<tr>");
sb.append(" <td style='border:1px #0066ff solid;' >100</td>");
sb.append("<td style='border:1px #0066ff solid;' >200</td>");
sb.append("<td style='border:1px #0066ff solid;' >300</td>");
sb.append("</tr>");
sb.append("<tr>");
sb.append("<td style='border:1px #0066ff solid;' >400</td>");
sb.append("<td style='border:1px #0066ff solid;' >500</td>");
sb.append("<td style='border:1px #0066ff solid;' >600</td>");
sb.append("</tr>");
sb.append("</table>");
sb.append("</body>");
sb.append("</html>");
return sb.toString();
}
}
相关推荐
为了理解Tomcat的工作原理,我们首先需要了解其核心组成部分:连接器(Connector)和容器(Container)。 连接器(Connector)负责监听特定端口上的TCP连接请求,并将接收到的HTTP请求转换成Tomcat内部能够处理的...
深入理解Tomcat的内部原理有助于我们更好地管理和优化Web应用程序的性能。以下是对Tomcat主要组成部分的详细解析: 1. Server(服务器): Server是Catalina(Tomcat的核心组件)的顶级元素,代表着整个Servlet...
Connector是Tomcat与外界通信的桥梁,负责监听特定端口上的客户请求。例如,Coyote Http/1.1 Connector监听8080端口,处理HTTP请求,而Coyote JK2 Connector则在8009端口监听来自其他Web服务器(如Apache)的...
2001年,它被JavaWorld杂志评选为最具创新性的Java产品之一,并且Sun官方推荐使用Tomcat作为Servlet和JSP的容器。 - **免费与开源**:Tomcat是一款免费且开源的产品,用户可以在Apache许可下自由下载、使用和修改。...
JerryMouse开源的特性使得开发者可以直接查看和修改其源代码,这对于学习Web服务器的工作原理、进行定制化开发或者优化性能来说是非常有价值的。开发者可以根据自己的需求对服务器进行调整,或者为其添加新的功能。...
总结来说,Tomcat的工作原理涉及了Web服务器的各个关键环节,从网络通信到请求处理,再到应用部署和安全管理。理解这些原理有助于我们更好地优化Tomcat配置,提升Web应用的性能和安全性。通过深入学习,开发者不仅能...
本文旨在深入探讨Tomcat的工作原理,尤其关注其内部机制如何支持Web应用的运行。目标读者是对Java Web开发感兴趣的开发者和技术爱好者。接下来,我们将逐步了解Tomcat的基本组成部分及其功能。 #### 二、Servlet...
《Tomcat与Java.Web开发技术详解》是一本深入解析Tomcat服务器和Java Web开发的教程。本书旨在帮助读者全面理解如何使用Tomcat作为Java Web应用的运行环境,并掌握相关的开发和部署技巧。以下是对该主题的详细阐述:...
【Tomcat工作原理深入详解】 Tomcat是一款广泛使用的开源Web应用服务器,尤其在中小型系统和并发访问量不高的场景中,其轻量级特性使其成为开发者首选。虽然Tomcat最初作为Apache服务器的扩展存在,但它可以独立...
#### Tomcat Web应用集群的基本原理 通常情况下,搭建基于Tomcat的Web应用集群主要有三种方式: 1. **利用负载均衡器的粘性会话机制**:通过负载均衡器将同一个会话的所有请求都发送到相同的Tomcat节点。这种方法...
这对于学习Java Web开发和理解Tomcat的工作原理非常有帮助。在实际的开发过程中,大型的Tomcat服务器会包含更多的功能,如多线程处理请求、连接池管理、会话管理、安全管理等,但这个迷你版为我们提供了一个很好的...
6. **安全管理**:Tomcat 6.0支持多种安全机制,如基本认证、digest认证、SSL/TLS加密通信等,通过`conf/server.xml`中的`<Realm>`元素进行配置,以保护Web应用免受未经授权的访问。 7. **性能优化**:Tomcat 6.0...
Connector是Tomcat的核心组件之一,负责处理客户端请求与服务器响应之间的通信。它监听特定端口上的网络连接,接收来自客户端的HTTP请求,并将这些请求转发给Container进行处理。处理完成后,再将结果返回给客户端...
《Tomcat与Java.Web开发技术详解》是一本深入探讨Java Web应用服务器——Tomcat以及相关开发技术的专业书籍。光盘附带的"sourcecode1...通过实际操作这些代码,读者可以加深对Java Web开发和Tomcat工作原理的理解。
Java Web服务器原理主要涉及到Web应用的部署、运行和管理,其中Tomcat是一个广泛使用的开源Java Servlet容器,它是Java EE(现在称为Jakarta EE)的一部分。本文将深入探讨Java Web服务器的工作原理,特别是Tomcat的...
### TOMCAT原理详解及请求过程 #### 一、TOMCAT概述 TOMCAT是一个开源的免费的轻量级Web应用服务器,它主要作为一个JSP/Servlet容器而被广泛使用。Tomcat支持Java Servlet和JavaServer Pages (JSP)技术,并且提供...
6. **WebSocket与 Comet技术**:讲解基于Tomcat的实时通信技术,如WebSocket的实现,以及Comet的原理和应用。 7. **Tomcat集群与负载均衡**:讨论如何通过Tomcat实现应用的集群部署,以及负载均衡策略的配置。 8. ...
根据提供的文件信息,“孙卫琴 Tomcat与Java&Web开发技术详解.pdf”,我们可以总结出以下相关的IT知识点: ### 一、Tomcat服务器介绍 #### 1.1 Tomcat概述 Tomcat是由Apache软件基金会(ASF)开发的一款开源的...
Tomcat是一个广泛使用的开源Java应用...总之,Tomcat是一个功能强大的Web服务器,其工作原理包括连接器的网络通信和容器的请求处理。掌握这些原理不仅有助于日常开发,还能提升解决问题的能力,为职业生涯增添亮点。