iOS:即时通讯之<了解篇 SocKet>

什么是socket?

计算机专业术语就是:

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务

通俗语:

Socket称"套接字”

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket端,平时我们向服务器发送一个网络请求,然后服务器响应请求,返回服务器数据应用程序通常通过"套接字"向网络发出请求或者应答网络请求

细节:

1.Socket相当于一个“管道”或者说“隧道”两边的连接,一个进入,一个出来

2.用户名和密码是存储在服务器的数据库中

3.我们要保证客户端程序是访问web应用程序还是数据库应用程序呢?就是通过端口号


网络通信要素:

1.网络上的请求就是通过Socket来建立连接然后互相通信

2.IP地址(网络上主机设备的唯一标识)(寻找服务器的主机)

3.端口号(定位程序)

4.用于标示进程(一个程序就是一个进程)的逻辑地址,不同进程的标示

5.有效端口:0~65535,其中0~1024由系统使用或者保留端口,开发中建议使用1024以上的端口

6.传输协议(用什么样的方式进行交互)(方式就是TCP和UDP需要还是不需要建立连接。就像快递一样,像顺丰或者是圆通就是一个方式)

7.通讯的规则 (常见协议:TCP、UDP)

TCP:

三次握手,是为了数据的安全性和可靠性  比如打电话:

第一次握手:先拨过去

第二次握手:对方“喂”了一声,响应一下,

第三次握手:我听到对方之后,也说了一句“喂” ,响应。

只有这三个步骤,别人喂了一声,你也喂了一声,它能听到我的响应,我还能听到它的响应才是成功的。假如借钱,这样才能保证了安全性和可靠性

1.必须建立连接,效率会稍低(每一次都要建立连接)

2.进行了多少次HTTP请求,就进行了多少次三次握手(HTTP是效率低低些,但是影响不大,因为用户下次发送网络请求的时间不固定,所以没有多大影响)(打电话如果一直保持,电话费不就多了吗)

3.HTTP就是每发送一次请求,就建立一次TCP连接,三次握手

UDP:

将数据及源和目的封装成数据包中,不需要建立连接(就像老师(源)屏幕广播,就及时的把数据同步发送到你的电脑上(目的),直接发送。假如网络断了,再次看到屏幕的时候,只能看到最新的内容。没了就没了,错过了就错过了)

每个数据报的大小限制在64Kb之内(首先是实时的,如果数据弄大点,如果出问题,就不会有太大的破坏)

因为无需连接,因此是不可靠协议(省去了三次握手,性能就高了)

不需要建立连接,速度快

应用:

Socket通信流程图:

1.bind()就是绑定端口      (服务器要有端口标识自己)

2.listen()就是监听端口看有没有lianjie过来,我同意就接受连接      (假如客户端要连接web应用程序端口,就要监听80端口。假如是恶意攻击,多次并发请求,会造成网络阻塞,那我就可以断开你的连接)

3.accept()

4.write()客户端发请求

5.read()服务端接受请求

假如客户端发送登录请求,我服务器是要做出来请求的,服务器要做回应数据,发数据给客户端,做一个write()写的操作一个HTTP的请求完了后,接下有个操作,结束连接。因为下次请求的时间是不固定的。就做一个close()操作

HTTP的底层就通过Socket建立连接通信管道,实现数据的传输

HTTP是一个TCP的传输协议(方式),它是一个可靠的安全的协议

实现Socket服务端监听方法:

1:实现socket的监听方法就是使用C语言实现(系统默认就有,但是麻烦)

2:使用CocoaAsyncSocket第三方框(是OC的),内部是对C的封装,耗时操作肯定是耗时的,开发的时候,我们也是用的这个框架

3:Telnet命令 telnet host port/telnet 192.168.10.10 5288  telnet命令是连接服务器上的某个端口对应的服务

Socket层上的协议:

1.Socket层上的协议指的数据传输的格式:

2:HTTP协议(类似于字典的协议)

3:XMPP协议(是一款即时通讯协议(目的是定义数据传输的格式)

4:自定义即时通讯协议,json格式



补充:TCP、UDP、HTTP、SOCKET之间的区别

IP:网络层协议;

TCP和UDP:传输层协议;

HTTP:应用层协议;

SOCKET:TCP/IP网络的API。

TCP/IP代表传输控制协议/网际协议,指的是一系列协议。

TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。

记住,需要IP协议来连接网络;TCP是一种允许我们安全传输数据的机制,,使用TCP协议来传输数据的HTTP是Web服务器和客户端使用的特殊协议。

Socket 接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,用以开发TCP/IP网络上的应用程序。

文/iOS开发到放弃(简书作者)
原文链接:http://www.jianshu.com/p/3167802eb1e5

时间: 2024-10-12 10:45:13

iOS:即时通讯之<了解篇 SocKet>的相关文章

iOS 即时通讯,从入门到 “放弃”?

原文链接:http://www.jianshu.com/p/2dbb360886a8 本文会用实例的方式,将 iOS 各种 IM 的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. —— 由宇朋Look分享 前言 本文会用实例的方式,将iOS各种IM的方案都简单的实现一遍.并且提供一些选型.实现细节以及优化的建议. 注:文中的所有的代码示例,在github中都有demo:iOS即时通讯,从入门到“放弃”?(demo)可以打开项目先预览效果,对照着进行阅读. 言归正传,首先我们来总

iOS即时通讯之CocoaAsyncSocket源码解析四

原文 前言: 本文为CocoaAsyncSocket源码系列中第二篇:Read篇,将重点涉及该框架是如何利用缓冲区对数据进行读取.以及各种情况下的数据包处理,其中还包括普通的.和基于TLS的不同读取操作等等.注:由于该框架源码篇幅过大,且有大部分相对抽象的数据操作逻辑,尽管楼主竭力想要简单的去陈述相关内容,但是阅读起来仍会有一定的难度.如果不是诚心想学习IM相关知识,在这里就可以离场了... 注:文中涉及代码比较多,建议大家结合源码一起阅读比较容易能加深理解.这里有楼主标注好注释的源码,有需要的

iOS即时通讯之CocoaAsyncSocket源码解析五

接上篇:iOS即时通讯之CocoaAsyncSocket源码解析四         原文 正文待补...

IOS 即时通讯 + 微信聊天框架 + 源码

这些你造吗? 即时通讯(IM),在IOS这片江湖里面已经算是一个老者了,我这小旋风也是在很早以前巡山的时候,就知道有即时通讯这个妖怪,以前也多多少少接触过一些,在造APP的时候用过,哎呀,说着说着就感觉要跑题了,脑海中怎么波涛翻滚的样子.不好,才开头了两句,忍住!!说回正题,我知道的即时通讯有用 CocoaAsyncSocket 还有 XMPPFramework 实现的,当然也有现在也有大部分接入环信的.有些东西掩盖不住的,我是你知道的越多越会觉得自己是个文盲,会有很强烈的感觉,你不懂的真的好多

iOS 即时通讯 SDK开发包

一.系统介绍 BRAChat for iOS SDK是一套即时通讯开发平台(SDK),包含了音视频处理模块与P2P网络模块两大部分,是 Platform Core SDK的重要组成部分,专为iOS平台设计,适用于iPhone.iPad.iTouch等Apple公司移动终端设备,并针对ARM系列CPU进行了汇编优化,可以做为iPhone平台上的即时通讯内核引擎,也可以做为视频会议.网络教育.即拍即传系统等互动平台的核心库.整个平台由广州佰锐网络科技有限公司独立研发,具有自主知识产权. Chat S

IOS 即时通讯的框架 配置环境

一.了解XMPP 协议(标准)XMPP 即时通讯协议SGIP 短信网关协议 这手机发短信 移动支付和网页支付 0x23232[0,1] 0x23232 0x23232 0x23232 只有协议,必须会有协议文档 二.环境配置 1.安装mysql2.修改mysql的帐户的密码>sqlite(移动平台) ,是没有密码直接连接数据库>mysql sqlServer (服务端的数据库) 是有帐户和密码  默认安装完mysql,他的帐户是root 密码为空 "使用命令登录mysql"

XMPP之ios即时通讯客户端开发-配置XMPP基本信息之工程代码(五)

登录功能完成以后包含以下代码文件: AppDelegate.h AppDelegate.m LoginViewController.h LoginViewController.m LoginUser.h LoginUser.m 以下看代码: // // AppDelegate.h // XMPP即时通讯 // // Created by Mac on 15/7/15. // Copyright (c) 2015年 聂小波. All rights reserved. // #import <UIK

iOS 即时通讯SDK的集成,快速搭建自己的聊天系统

现在的外包项目需求变态的各种各样,今天要做社交,明天要加电商,后天又要加直播了,这些系统如果要自己开发,除非大公司技术和人力都够,不然短时间是几乎实现不了的.所以学会灵活利用市面上的各种SDK是灰常重要的技能. 最近继续在做的项目是一个气象救灾类APP,里面需要进行聊天的即时通讯模块.目前已经实现,效果如下: 一.市面上的即时通讯SDK 目前市面上的即时通讯SDK大概有:融云.网易云信.容联云等.非常多. 较为稳定.功能较全的应该是网易云信了,界面如下: 但是我们的应用需要的即时通讯是一个模块,

iOS开发——网络编程OC篇&amp;Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要