BS网络模式的运行原理及实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BS模式的工作原理 BS模式的工作原理
在B/S模式中,客户端运行浏览器软件。 浏览器以超文本形式向Web服务器提出访 浏览器以超文本形式向Web服务器提出访 问数据库的要求,Web服务器接受客户端 问数据库的要求,Web服务器接受客户端 请求后,将这个请求转化为SQL语法,并 请求后,将这个请求转化为SQL语法,并 交给数据库服务器,数据库服务器得到请 求后,验证其合法性,并进行数据处理, 然后将处理后的结果返回给Web服务器, 然后将处理后的结果返回给Web服务器, Web服务器再一次将得到的所有结果进行 Web服务器再一次将得到的所有结果进行 转化,变成HTML文档形式,转发给客户端 转化,变成HTML文档形式,转发给客户端 浏览器以友好的Web页面形式显示出来。 浏览器以友好的Web页面形式显示出来。
案例案例-多线程
public class Person extends Thread{ private String name ; public Person(String name){ this.name this.name = name; } public void run() { int i = 0; while( while( i <= 100 ){ System.out.println(name+"线程---"+i++); System.out.println(name+"线程---"+i++); try {
接收客户端发来的“数据”,打印到控制台。
客户端
做一个死循环,发送“数据”
多线程
一、操作系统中线程和进程的概念 Java中的线程 二、Java中的线程
一、操作系统中线程和进程的概念
现在的操作系统是多任务操作系统。多线程是实现多任务 的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己 独立的一块内存空间,一个进程中可以启动多个线程。比 如在Windows系统中,一个运行的exe就是一个进程。 如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多 个线程。比如java.exe进程中可以运行很多线程。线程总 个线程。比如java.exe进程中可以运行很多线程。线程总 是属于某个进程,进程中的多个线程共享进程的内存。 “同时”执行是人的感觉,在线程之间实际上轮换执行。
Java中的线程 Java中的线程
在Java中,“线程”指两件不同的事情: Java中,“线程”指两件不同的事情: 1、java.lang.Thread类的一个实例; java.lang.Thread类的一个实例; 2、线程的执行。
继承java.lang.Thread类 继承java.lang.Thread类
Thread.sleep(100); //休眠100毫秒 Thread.sleep(100); //休眠100毫秒 } catch (InterruptedException e) {
e.printStackTrace(); } } } //========================================================== User user1 = new User("孙悟空"); User("孙悟空"); new Thread( user1 ).start(); User user2 = new User("猪八戒"); User("猪八戒"); new Thread( user2 ).start();
} } 运行线程类: User user = new User(); new Thread( user ).start();
案例案例-多线程
public class User implements Runnable{ private String name ; public User (String name){ this.name this.name = name; } public void run() { int i = 0; while( while( i <= 100 ){ System.out.println(name+"线程---"+i++); System.out.println(name+"线程---"+i++); try {
BS模式的工作原理及实现 BS模式的工作原理及实现
作者:李世明
BS模式 BS模式
BS模式,即浏览器/服务器模式,是一种 BS模式,即浏览器/服务器模式,是一种 从传统的二层CS模式发展起来的新的网络 从传统的二层CS模式发展起来的新的网络 结构模式,其本质是三层结构CS模式。 结构模式,其本质是三层结构CS模式。
案例案例-聊天室
到这里大家已经可以简单使用Scoket和多 到这里大家已经可以简单使用Scoket和多 线程了。 我们来做一个案例。 把刚才的信息发送改成聊天室。
IO流 IO流
什么是流? 流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX (stream)的概念源于UNIX中管道(pipe)的概念。在UNIX 中,管道是一条不间断的字节流,用来实现程序或进程间 的通信,或读写外围设备、外部文件等。 流的方向是重要的,根据流的方向。 流可分为两类:输入流和输出流。 用户可以从输入流中读取信息,但不能写它。相反,对输 出流,只能往输入流写,而不能读它。
BS模式的工作原理 BS模式的工作原理
BS模式的工作原理 BS模式的工作原理
使用到的技术
Socket网络通信 Socket网络通信 多线程 IO流(文件操作) IO流(文件操作)
TCP协议 TCP协议
TCP协议提供可靠的连接服务,采用三次握手建立一个连 TCP协议提供可靠的连接服务,采用三次握手建立一个连 接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服 第一次握手:建立连接时,客户端发送syn包(syn=j)到服 务器,并进入SYN_SEND状态,等待服务器确认; 务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN 第二次握手:服务器收到syn包,必须确认客户的SYN (ack=j+1),同时自己也发送一个SYN包(syn=k),即 ack=j+1),同时自己也发送一个SYN包(syn=k),即 SYN+ACK包,此时服务器进入SYN_RECV状态; SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务 第三次握手:客户端收到服务器的SYN+ACK包,向服务 器发送确认包ACK(ack=k+1),此包发送完毕,客户端和 器发送确认包ACK(ack=k+1),此包发送完毕,客户端和 服务器进入ESTABLISHED状态,完成三次握手。 服务器进入ESTABLISHED状态,完成三次握手。
public class Person extends Thread{ //线程体 //线程体 public void run() {
//在这里添加—代码 //在这里添加— System.out.println("线程开始。。"); System.out.println("线程开始。。");
} } 运行线程类: Person person = new Person(); person.start();
数据的管道
根据文件的类型分类
字节流 FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(f2);
字符流 Writer out = new FileWriter(file); FileWriter(file); Reader in = new FileReader(file);
this.sleep(100); //休眠100毫秒 this.sleep(100); //休眠100毫秒
} catch (InterruptedException e) { e.printStackTrace(); } } } //============================================== Person person1 = ຫໍສະໝຸດ Baiduew Person("孙悟空"); Person("孙悟空"); person1.start(); Person person2 = new Person("猪八戒"); Person("猪八戒"); person2.start();
实现java.lang.Runnable接口 实现java.lang.Runnable接口
public class User implements Runnable{ public void run() {
//在这里添加—代码 //在这里添加— System.out.println("线程开始。。"); System.out.println("线程开始。。");
服务器
Scoket客户端 Scoket客户端
String ip = "localhost"; Socket socket = new Socket( ip , 4700);
IO流的使用 IO流的使用
获得输入流 BufferedReader in = new BufferedReader(new BufferedReader(new InputStreamReader(socket.getInputStream())); 获得输出流 PrintWriter out = new PrintWriter(socket.getOutputStream()); out.close(); // 关闭Socket输出流 关闭Socket输出流 in.close(); // 关闭Socket输入流 in.close(); 关闭Socket输入流 socket.close(); // 关闭Socket 关闭Socket

Scoket服务器 Scoket服务器
ServerSocket server = new ServerSocket(4700); // 创建一个ServerSocket在端口4700监听客户请求 创建一个ServerSocket在端口4700监听客户请求 System.out.println("等待用户连接,处于阻塞状态。"); System.out.println("等待用户连接,处于阻塞状态。"); Socket socket = server.accept(); // 使用accept()阻塞等待客户请求,有客户 使用accept()阻塞等待客户请求,有客户 // 请求到来则产生一个Socket对象,并继续执行 请求到来则产生一个Socket对象,并继续执行 System.out.println("连接的IP: System.out.println("连接的IP: "+socket.getInetAddress().getHostAddress());
字节流
文件的拷贝 文件夹的拷贝 文件的下载 文件的上传
文件拷贝
FileInputStream in = new FileInputStream(f1); FileOutputStream out = new FileOutputStream(f2); byte[] byte[] buffer = new byte[length]; byte[length]; int ins = in.read(buffer);//读取字节到buffer中 in.read(buffer);//读取字节到buffer中 //ins == -1 时 。就已经是文件的结尾了 while ( ins != -1 ) { out.write(buffer, 0, ins);//将缓存buffer中的数据写到文件中 ins);//将缓存buffer中的数据写到文件中 ins = in.read(buffer); } in.close(); out.flush(); out.close();
IO流的使用 IO流的使用
发送 out.println("bye"); out.println("bye"); out.flush(); 接收 in.readLine() //注意此方法会处于阻塞状态,不接到数据 //注意此方法会处于阻塞状态,不接到数据 就停在这等。
案例案例-信息发送
服务器 功能:
相关文档
最新文档