• IOS socket基于tcp/udp的通信


    网络上已经有编写好的开源类库GCDAsyncSocket 和GCDAsyncUdpSocket  这是GCD版的  比AsyncSocket 和AsyncUdpSocket估计要好用点 用法也很简单,跟http很类似  只要指定服务器的ip和端口 然后再实现各种回调就行,原生态实现正在摸索。。。。。socket默认情况下就是采用TCP协议,创建之后通信双方的socket会一直保持连接,除非手动close或因为网络原因close,所以,此种状况对服务器而言是有一定资源消耗的,这种模式只适应与对服务器小规模的访问,特别是对于实时性很高的应用,如视频直播、呼叫系统等,而http一般都是短连接的,一次请求完之后客户端便会于服务端端开连接
       http是凌驾于socket之上的高级协议,而socket是比较底层的通讯方式,只是建立了一个连接通道,具体上面传输什么样的数据,按照什么格式传输,需要你自己定义,所以这就需要重新编写定义服务端与客户端的所应遵循的规定,而http已经被前人们定义使用过了

    先去github的网站下载最新的包,然后先看看介绍。写的比较详细了

    https://github.com/robbiehanson/CocoaAsyncSocket/

    网上很多都是老版本的帖子。官方已经推出了GCDAsyncSocket来代替以前老的AsyncSocket。

    我的项目是no-ARC的,这个框架只有arc的版本。所以引入GCDAsyncSocket的.h和.m文件后,修改xcode中项目的属性。

    1)targets中“build settings”中找到Compiler for c/c++/Objective-c的选项。改为Apple LLVM compiler 3.0 只要是3.0或以上就可以

    2)在“build phases”中“compile sources”中找到GCDAsyncSocket.m,增加参数-fobj-arc

    3)引入GCDAsyncSocket所需要的框架,CFNetwork和security这两个



    知识补充:

    使用Socket进行C/S结构编程,连接过程

     1

    服 务器端监听某个端口是否有连接请求。服务器端程序处于堵塞状态,直到客户端向服务器端发出连接请求,服务器端接受请求程序才能向下运行。一旦连接建立起 来,通过Socket可以获得输入输出流对象。借助于输入输出流对象就可以实现与客户端的通讯,最后不要忘记关闭Socket和释放一些资源(包括:关闭 输入输出流)。

    客户端流程是先指定要通讯的服务器IP地址、端口和采用的传输协议(TCP或UDP),向服务器发出连接请求,服务器有应答请求之后,就会建立连接。之后与服务器端是一样的了。

    在iOS中,客户端Socket编程可以使用的技术有三种:

    使用NSStream。面向Objective-C语言的实现,由苹果提供的Foundation框架提供的API;

    使用CFStream。面向C语言的实现,由苹果提供的Core Foundation框架提供的API;

    BSD Socket。 也叫伯克利套接字(Berkeley Socket),是Unix平台下广泛使用的Socket编程。它是面向C语言实现 的,完全使用C编写,使用起来比较麻烦。它是伯克利加州大学(University of California, Berkeley)的学生开发的。

    在iOS中,服务器端Socket编程可以使用技术有二种:

    使用CFStream。面向C语言的实现,由苹果提供的Core Foundation框架提供的API;

    BSD Socket。 也叫伯克利套接字(Berkeley Socket),是Unix平台下广泛使用的Socket编程。它是面向C语言实 现的,完全使用C编写的,使用起来比较麻烦。它是伯克利加州大学(University of California, Berkeley)的学生开发 的。


  • 相关阅读:
    HTML大文件上传(博客迁移)
    微信小程序初探
    基于NodeJS微信公众号
    基于NodeJS的秘室聊天室
    CSS3 值得称赞新特性
    CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录
    IOS学习之-私人通讯录
    android 模拟2048
    使用ctypes在Python中调用C++动态库
    [Leetcode] Longest Palindromic Subsequence
  • 原文地址:https://www.cnblogs.com/cnsec/p/11515819.html
Copyright © 2020-2023  润新知