ios socket网络编程

网络套接字编程介绍

做~自己de王妃 提交于 2020-01-27 07:13:24
以下是阿鲤对套接字编程的一些理解性总结,希望对大家有所帮助;若存在错误,请慷慨指出; 1:套接字编程预备知识 2:socket api(套接字编程接口)介绍 3:udp协议的客户端/服务端的介绍实现 4:tcp协议的客户端/服务端的介绍实现 一: 套接字编程预备知识 1:ip地址 IP协议规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能将邮件送到。同理,每个IP信息包都必须包含有目的设备的IP地址,信息包才可以正确地送到目的地。同一设备不可以拥有多个IP地址,所有使用IP的网络设备至少有一个唯一的IP地址。换言之,可以分配多个IP地址给同一个网络设备,但是同一个IP地址却不能重复分配给两个或以上的网络设备。 目前使用最广泛的IP地址规则为IPV4,其使用32位二进制来规定,而截至2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商;所以现在大部分上网均采用动态地址分配,即便如此依旧不够使用;虽然出现了IPV6,但是IPV6还在部署初期; 2:端口号 端口号是一个2字节16位的整数;端口号用来标识一个进程,告诉操作系统,当前这个数据要交给哪一个进程来处理;所以ip地址+端口号就可以标识出某一台主机上的某一个进程(程序); 注意

Boost.Asio技术文档

烈酒焚心 提交于 2019-11-29 16:56:41
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0 的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从 http://www.boost.org/LICENSE_1_0.txt ) Boost.Asio 是用于网络和低层IO 编程的跨平台C++库,为开发者提供了C++环境下稳定的异步模型. 综述 基本原理 应用程序与外界交互的方式有很多, 可通过文件,网络,串口或控制台.例如在网络通信中,完成独立的IO操作需要很长时间.对应用程序开发者提出了一个挑战. Boost.Asio 提供了管理需长时间运行操作的工具, 但不必涉及到线程的并发模式和显式锁定. Boost.Asio 库使用C++ 来实现,提供如网络编程等常用的操作系统接口. Boost.Asio实现了如下目标: · 可移植性Portability. 库支持一系列的常用系统操作, 具有稳定的跨平台特性. · 可扩展性Scalability. 库可以帮助开发者构建数千并发连接的网络应用程序.asio 库实现的每个系统操作都使用了最具扩展性的机制. · 效率Efficiency. 库支持发散聚合IO(scatter-gather I/O) 等技术,使应用程序尽量少的拷贝数据. · 可以像BSD Sockets

第八章.网络编程

梦想与她 提交于 2019-11-27 12:09:53
第八章 网络编程 两个运行中的程序如何传递信息? 通过文件 两台机器上的两个运行程序如何通信? 通过网络 8.1 网络应用开发架构 8.1.1C/S结构 全称 client / server 客户端 / 服务端 [C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。C/S架构软件有一个特点,就是如果用户要使用的话, 需要下载一个客户端,安装后就可以使用 。比如QQ,OFFICE软件等。 [ 它可以分为 客户机和服务器两层 : 第一层: 在客户机系统上结合了界面显示与业务逻辑(即用户表示层) 第二层: 通过网络结合了数据库服务器(数据库层)。   这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情. C/S架构的优点: 1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要) 2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。 3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢) C/S架构的缺点: 可以将QQ作为类比: 1 适用面窄,通常用于局域网中。 2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。 3 维护成本高,发生一次升级

一文读懂即时通讯应用中的网络心跳包机制:作用、原理、实现思路等

ぐ巨炮叔叔 提交于 2019-11-26 12:34:34
本文原文由作者“张小方”原创发布于“高性能服务器开发”微信公众号,原题《心跳包机制设计详解》,即时通讯网收录时有改动。 1、引言 一般来说,没有真正动手做过网络通信应用的开发者,很难想象即时通讯应用中的心跳机制的作用。但不可否认,作为即时通讯应用,心跳机制是其网络通信技术底层中非常重要的一环,有没有心跳机制、心跳机制的算法实现好坏,都将直接影响即时通讯应用在应用层的表现——比如:实时性、断网自愈能力、弱网体验等等。 总之,要想真正理解即时通讯应用底层的开发,心跳机制必须掌握,而这也是本文写作的目的,希望能带给你启发。 需要说明的是:本文中涉及的示例代码是使用 C/C++ 语言编写,但是本文中介绍的心跳包机制设计思路和注意事项,都是是些普适性原理,同样适用于其他编程语言。虽然语言可以不同,但逻辑不会有差别! 学习交流: - 即时通讯/推送技术开发交流4群: 101279154 [推荐] - 移动端IM开发入门文章:《 新手入门一篇就够:从零开发移动端IM 》 (本文同步发布于: http://www.52im.net/thread-2697-1-1.html ) 2、相关文章 《 为何基于TCP协议的移动端IM仍然需要心跳保活机制? 》( 推荐 ) 《 微信团队原创分享:Android版微信后台保活实战分享(网络保活篇) 》( 推荐 ) 《 移动端IM实践