当前课程知识点:JAVA程序设计进阶 >  第四章 网络编程(上) >  4.4 Socket通信原理 >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

Video课程教案、知识点、字幕

这一节我们将介绍

Socket通讯原理

也就是说如何在

两个java程序之间

建立网络连接

首先介绍一下TCP传输协议

那TCP传输协议

是我们互联网当中

最常用的传输协议

它提供的是面向连接的传输

它可以提供可靠的流式数据传输

那这个过程打比喻的话

有点类似我们打电话的过程

如果我们的同学打过电话

都知道在你拨完电话以后

都会有一小段时间

需要来建立连接

那建立连接的目的

就是为了能够很好的

把我们的语音进行传输

那在我们进行

java网络编程的时候

用TCP的话

也可以是实现一种

基于连接的可靠的

流式数据传输的方式

那在java当中有好几个类

都是使用TCP协议

来进行网络通讯

比如说URL URLConnection

Socket ServerSocket等类

这些都使用的TCP协议

来进行网络通讯

那这个Socket通讯的

原本原理是什么呢

它是通过网络上的两个程序

采用一个双向的通讯连接

来实现数据的交换

这个双向链路的一端

称之为一个socket

那我们用socket的话

通常是用来实现

客户方与服务方之间的连接

下面我们看看这个图示

我们有一个服务器

服务器上面有可能会提供

各种各样的服务

比如说它可以提供http服务

通过端口80来提供服务

那我们互联网上有很多用户

比如说这个用户

通过这个网络连接

连接到我们这个服务器上的

这个http服务

有可能另外一个用户

也通过这个网络连接

连接到我们的这个服务器上

那除了http服务

还可以有别的服务

比如说SMTP

也就是我们的发邮件的服务

那我们客户端

可以和我们服务端的

SMTP这个服务来进行连接

再有可能就是多个客户

连接到同一个服务上面

那同样的道理

我们一个服务器

也可以提供多种服务

比如说我们这个服务器

除了提供http和SMTP服务外

它也有可能提供ftp服务

那我们另外的客户就会连接到

我们这个服务器的ftp服务上面

还有一种服务

比如叫远程登录服务telnet

也会有这个客户通过连接

连到我们服务器的这个服务上面

所以这些图上大家可以看到

我们的Client我们的客户端

会和我们的Server端进行通讯

那我们的Server端的话

它会提供多种Services

也就是说提供多种服务

那怎么用Socket

来去达到客户端和服务端

这个连接的这个目的呢

基本上是这样的

就是说我们在客户端

它有个客户端的Socket

然后在Server端的话

也会有个Server端的Socket

那由客户端向我们的服务端

发出一个Socket连接请求

那我们Server收到这个请求以后

给予积极的响应

给它返回一个响应信号

这样的话在我们的客户端

和Server端之间

就建立了一个Socket连接

那我们再把刚才这个连接过程

做一个细致入微的一个描述

首先在Server端的话

它会有一个这个ServerSocket

这个类一个对象

它一直在运行着

那运行着它就等待

它等待什么呢

等待说有没有客户端

主动发起请求

想要和服务端连接

你看我们这个客户端

发起一个request

那发出一个请求

发到这个服务端以后

服务端收到这个请求了以后

这个ServerSocket这个对象

它就会通过它的方法

去返回一个Socket对象

它new了一个Socket

那这个Socket

就是和我们Client Socket

这是进行对等连接的

当服务端和客户端

都建立了Socket

这个对象连接以后

再往下一步就是需要传送数据

那所谓传送数据的话

实际上就是通过Socket对象

获得这个双方的输入输出流

那获得输入输出流了以后

就可以数据的读写

比如说我们可以从客户端

发一个数据发到服务端

那服务端接收完了以后

也可以从服务端

再发送一个数据

发回给这个客户端

那这个发送数据的过程

实际上采用就是IO读写的方式

那当网络这个连接

建立起来了以后

所谓的网络通讯

其实就变成的我们的IO读写

当客户端和服务端

都完成它读写的目的以后

我们再下一步

需要把这个Socket给它关闭

比如在Client端用Close

然后在服务端用Close

这样把两个Socket对象

都关闭了以后

那整个这个通信过程

也就结束了

这一节我们介绍的

Socket通讯的基本原理

JAVA程序设计进阶课程列表:

第一章 线程(上)

-1.0 导学

--Video

-1.1 线程的基本概念

--Video

-1.1 线程的基本概念--作业

-1.2 通过Thread类创建线程

--Video

-1.2 通过Thread类创建线程--作业

-1.3 线程的休眠

--Video

-1.3 线程的休眠--作业

-1.4 Thread类详解

--Video

-1.5 通过Runnable接口创建线程

--Video

-1.5 通过Runnable接口创建线程--作业

-1.6 线程内部的数据共享

--Video

第二章 线程(中)

-2.0 导学

--Video

-2.1 线程同步的思路

--Video

-2.2 线程同步的实现方式—Synchronization

--Video

-2.3 线程的等待与唤醒

--Video

-2.4 后台进程

--Video

-2.5 线程的生命周期与死锁

--Video

-2.6 线程的调度

--Video

第三章 线程(下)

-3.0 导学

--Video

-3.1 线程安全与线程兼容与对立

--Video

-3.2 线程的安全实现-互斥同步

--Video

-3.3 线程的安全实现-非阻塞同步

--Video

-3.4 线程的安全实现-无同步方案

--Video

-3.5 锁优化

--Video

第四章 网络编程(上)

-4.0 导学

--Video

-4.1 URL对象

--Video

-4.2 URLConnection对象

--Video

-4.3 Get请求与Post请求

--Video

-4.4 Socket通信原理

--Video

-4.5 Socket通信实现

--Video

第五章 网络编程(下)

-5.0 导学

--Video

-5.1 Socket 多客户端通信实现

--Video

-5.2 数据报通信

--Video

-5.3 使用数据报进行广播通信

--Video

-5.4 网络聊天程序

--Video

第六章 Java虚拟机

-6.0 导学

--Video

-6.1 Java虚拟机概念

--Video

-6.2 Java虚拟机内存划分

--Video

-6.3 Java虚拟机类加载机制

--Video

-6.4 判断对象是否存活算法及对象引用

--Video

-6.5 分代垃圾回收

--Video

-6.6 典型的垃圾收集算法

--Video

-6.7典型的垃圾收集器

--Video

第七章 深入集合Collection

-7.0 导学

--Video

-7.1 集合框架与ArrayList

--Video

-7.2 LinkedList

--Video

-7.3 HashMap与HashTable

--Video

-7.4 TreeMap与LinkedHashMap

--Video

-7.5 HashSet

--Video

第八章 反射与代理机制

-8.0 导学

--Video

-8.1 Java反射机制

--Video

-8.2 Java静态代理

--Video

-8.3 Java动态代理

--Video

-8.4 Java 反射扩展-jvm加载类原理

--Video

-8.5 Java进阶课程总结

--Video

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。