前言
1.正如苹果的文档说的那样 ,如果你的确需要使用到十分底层的网络来进行通信的话,其实你可以考虑一下使用苹果已经做好的一个轻微封装好的框架:CFNetWork。
2.对于BSDSocket来说,某些网络io可能是阻塞式的,在使用时候需要注意到这些函数,防止冻结你的app界面,这通常是需要用到线程相关的技术。
3.既然需要用到线程相关的技术,那么可能就需要涉及到数据同步和线程通信的问题。
4.对于这些比较古老的函数,必须要清楚它的参数意思和返回值的含义,否则会出现一些非常让你懊恼的情况,举个典型的例子:我在不知道服务端代码中进行通信的时候需要使用accept函数返回的新的socket描述符来进行收发数据,假如依旧使用同客户端一样最初的socket描述符,是不会有数据的收到的情况的。
5.如3所描述的那样,多线程之间的数据同步需要考虑清晰,典型的情况是发生在一些socket相关的数据的同步的时候,本人偶尔会出现一些connect函数调用失败问题,多半就出自于线程的数据同步上面。
6.另外值得一提的是对于C字符串数组来说,是否含有汉字存在不一样的情况。在利用NSData进行利用c字符数组的时候再由NSString来加载NSData数据会存在null的情况,最好是再直接使用NSString加载c字符数组。
注:GitHub上面貌似也并没有太多ios相关的直观的demo,大部分也就是直接使用的CFNetWork这一个框架以及其之上的框架。
demo地址:
https://github.com/Annacheckingin/RAWBSDSocket-Demo-ios/branches