没有服务器的是需要自己先搭建一个。
通过nginx搭建一个HTTP服务器:
https://www.cnblogs.com/knowledgesea/p/5175711.html#!comments
由于需求都会有所不同,可根据自己业务需求来选择使用TCP或者UDP。在入门篇先介 绍CocoAsyncsocket中TCP的用法。
导入头文件#import <CocoaAsyncSocket/GCDAsyncSocket.h>
1.创建socket的实例对象(可根据业务创建多个,但建议只做一个即可):
2.连接服务端:
connectToHost的参数是传ip,port是传端口。
withTimeout的参数为什么是-1,因为设置其他为时间会出现超时,必然会断线。
3.实现delegate的方法:
sock即返回正在使用的socket,data即接收到返回的二进制数据(由客户端和服务端协商该用什么样的标识作为收发的数据包),tag即所在socket线程收到二进制数据的标签。
在这个方法里面进行解析数据,根据业务需求对数据进行切包、拼包,需要注意的是在这个方法里面要处理丢包的情况。
socket断线分3种情况,一种是是否自己主动切断(登出),一种是是否网络状态不好而断线(这种情况应该为用户进行断线重连),一种是服务端拒绝(最大原因是处于服务器负载量过大)。
4.发送数据到服务端:
writeData传的数据当然只能是二进制,所以需要进行转换;withTimeout是给传的这个当前数据设置一个超时时间,若并发量大的时候就应该考虑该因素;tag是给当前发送的这个数据上标签。
由于收发数据包是不会自动释放缓存的二进制数据,这样会造成粘包和接收不到下一个包的问题,所以每次收发完数据包都需要进行一个释放数据包的动作,实现以下方法即可
withTimeout是随着收发的socket进行对应的超时时间设置,tag即对应数据包的标签。
实现以上步骤即可完成一个初步的TCP连接并进行数据的收发。
网友评论