客户端到服务器的通信过程

认识socket

socket的英文原意为:孔、插座。当然作为进程通信机制,取插座的意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的)

socket非常类似于电话的插座。以一个电话网为例。

相互通信的两个程序:电话的通话双方
IP地址:电话号码
任何用户在通话之前,首先要占有一部电话机(相当于申请一个socket);
同时要知道对方的号码即IP地址(相当于对方有一个固定的socket)。
然后向对方拨号呼叫(相当于发出连接请求)。
假如对方在场并空闲,拿起电话话筒,双方就可以正式通话(相当于连接成功)。
双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程(相当于向socket发送数据和从socket接收数据)。
通话结束后,一方挂起电话机(相当于关闭socket),撤消连接,通信完成。

上述通信是以两个人通话的事例来了解通信,现假设通信双方为讲英文的外国人和讲中文的中国人要相互通信,由于语言的不通,就不能听懂对方在说啥。此时,如果我们有一个规定给通话双方,只能讲英文或中文,那么双方就可以无障碍进行沟通。这就是通信协议。

通信协议有两种类型

TCP协议与UDP协议

Tcp协议与Udp协议是在两硬件设备上进行通信传输的一种数据语法。
流式Socket(STREAM):

是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低;Tcp:是以流的形式来传的

数据报式Socket(DATAGRAM):

是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。Udp:将数据包拆开为若干份编号后来传输
缺点:在传输的过程中容易出现数据的丢失。
优点:但是传输速度要比TCP的。

Socket的通信流程

服务器端:

– 申请一个socket (socketWatch)用来监听的

– 绑定到一个IP地址和一个端口上

– 开启监听,等待接受客户端的连接

– 当有连接时创建一个用于和连接进来的客户端进行通信的socket(socketConnection)

– 继续监听,等侍下一个客户的连接

客户端:

– 申请一个socket(socketClient)

– 连接服务器(指明IP地址和端口号)

通信过程图


通过以上流程图我们可以看出,客户端与服务器端之间的一个基本通信流程。
Socket 一般应用模式(客户端和服务器端)的作用:

服务器端:最少有两个socket,一个是服务端负责监听客户端发来连接请求,但不负责与请求的客户端通信,另一个是每当服务器端成功接收到客户端时,但在服务器端创建一个用与请求的客户端进行通信的socket.

客户端:指定要连接的服务器端地址和端口,通过创建一个socket对象来初始化一个到服务器端的TCP连接。

客户端到服务器的通信过程相关推荐

  1. 客户端发送协议包给服务器,TCP协议的客户端与服务器的通信过程

    使用TCP时,客户端与服务器端的通信流程 服务器初始化 1)调用socket,创建文件描述符fd 2) 调用bind将fd与服务器的IP与PORT绑定 3)调用listen将套接字设为监听模式,准备接 ...

  2. 客户端到服务器端的通信过程及原理(很清晰,保证看后顿悟)

    学习任何东西,我们只要搞清楚其原理,就会触类旁通.现在结和我所学,我想总结一下客户端到服务器端的通信过程.只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题. 我 ...

  3. 客户端到服务器端的通信过程及原理(由浅入深,轻松理解)

    学习任何东西,我们只要搞清楚其原理,就会触类旁通.现在结和我所学,我想总结一下客户端到服务器端的通信过程.只有明白了原理,我们才会明白当我们程序开发过程中错误的问题会出现在那,才会更好的解决问题. 我 ...

  4. GBASE 8s客户端与服务器的通信

    GBase客户端与服务器的通信支持多种不同的方式:共享内存 Shared memory.Stream pipe. TCP/IP(Sockets.TLI).IPX/SPX.DRDA.我们通常选择TCP/ ...

  5. 客户端和服务器之间通信讲解

    原文网址:http://www.myexception.cn/program/1600316.html 一.关键词解释 客户端:能向服务器发送信息,提出请求. 服务器:能接收客户端发来的请求,并能发送 ...

  6. Socket实现Android客户端与服务器的通信

    前言:题目要求故写一下总结. 1.什么是Socket? 网络用语叫套接字原理是基于tcp/ip 协议的一种通信手段,目前题目中要求无非就是当客户端数据异常时推送给服务器报警信息 往常接下来都是先看效果 ...

  7. HttpClient实现客户端与服务器的通信

    本篇主要讲解了利用HttpClient实现 windows主机与linux服务器的通信与传递数据 HttpClient代码,服务器端配置 系统和安装软件 1)ubuntu 14.04 64位系统 2) ...

  8. motan源码分析六:客户端与服务器的通信层分析

    本章将分析motan的序列化和底层通信相关部分的代码. 1.在上一章中,有一个getrefers的操作,来获取所有服务器的引用,每个服务器的引用都是由DefaultRpcReferer来创建的 pub ...

  9. redis源码客户端和服务端通信过程

    最近想学习一下redis源码,先看一下redis通信流程.由于功力有限,不足之处望大家指正.服务端和客户端通信,一般都是服务端先启动,那先从服务端的源码看起. 首先启动服务端会做一些初始化动作,初始化 ...

最新文章

  1. java 80端口_Java80端口占用异常解决方法
  2. Flask-Script扩展命令行manager = Manager(app)
  3. 新特性:postgresql的vacuum漫谈
  4. 【Level 08】U07 Mixed Feelings L2 Let's go shopping
  5. Linux环境下一种比较有用的多线程程序调试技巧
  6. c语言铺地板,【北理乐学】铺地板
  7. python opencv读取图像并生成plt文件
  8. MacOS 软件 Adobe Photoshop 2022 安装使用详细教程
  9. EBS采购订单创建发票
  10. 基于python+django框架+Mysql数据库的疫苗预约系统设计与实现
  11. div 空隙的解决办法
  12. TeamViewer远程服务器管理工具使用哪些端口
  13. 第一章 红绿灯数据采集
  14. 自学资源(视频+文本)
  15. 人月神话是神话嘛?嗯!
  16. vscode 使用 git 踩坑 小记
  17. 使用树莓派打造一台收音机
  18. 基于ssm物业报修管理系统毕业设计源码111024
  19. 将.qsv格式视频转为.mp4视频
  20. 视频格式: QSV转MP4

热门文章

  1. 保姆级zookeeper集群搭建(leader+follower模式)
  2. 春招答疑总结 | 细节决定成败,决战2022春招
  3. 风控GPS定位数据价值有多大?
  4. 光伏“领跑者计划”带来一场恶性价格战?
  5. Zookeeper安装与可视化客户端详细使用教程
  6. PTcms精美小说阅读网站源码/带采集规则
  7. 计算机考研哪些专业不考数学,考研“不用考”数学的6类专业,适合数学“学渣”报考!...
  8. HBase2.2.2安装和编程
  9. 三菱Q系列伺服速度控制模式
  10. Codefoece Educational Codeforces Round 83 (Rated for Div. 2)题解,(ABCDE)