MAC OS/IOS Socket编程之AsyncSocket

时间:2024-05-22 15:41:31

最近在做越狱状态下的IOS后台监控软件,后台守护进程将取得的数据通过TCP发送到服务器,通过查阅资料了解到IOSsocket编程推荐使用公开的类库AsyncSocket,使用该类库极大的方便了socket的操作,下面开始介绍。

1、Socket简介

  socket是应用层与TCP/IP协议簇通信的中间软件抽象层,它是一组接口。Socket描述了一个IP、端口对,它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息。所以,Socket一定包含了通信的双发,即客户端(Client)与服务端(server)。

MAC OS/IOS Socket编程之AsyncSocket

  主要操作为:

  1)服务端利用Socket监听端口;

    服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

  2)客户端发起连接;

    指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

  3)服务端返回信息,建立连接,开始通信;

    当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发 给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

  4)客户端,服务端断开连接。

2、AsyncSocket

  下载AsyncSockethttps://github.com/robbiehanson/CocoaAsyncSocket类库,将RunLoop文件夹下的AsyncSocket.h, AsyncSocket.m, AsyncUdpSocket.h, AsyncUdpSocket.m 文件拷贝到自己的project(不管是服务器端还是客户端)中,添加CFNetwork.framework, 在使用socket的文件头中加入以下头文件:

  #import <sys/socket.h>

  #import <netinet/in.h>

  #import <arpa/inet.h>

  #import <unistd.h>

《--------------------------未完待续--------------------------》