主要使用的是CocoaAsyncSocket
集成就不說了,打開workspace
1.在build phases中加入編譯源

2.引入頭文件
#import<GCDAsyncSocket.h>
@property(nonatomic,retain)GCDAsyncSocket *socket;//定義一個(gè)Socket對(duì)象
3.遵守協(xié)議<GCDAsyncSocketDelegate>
4.初始化
self.socket =[[GCDAsyncSocketalloc]initWithDelegate:selfdelegateQueue:dispatch_get_global_queue(0,0)];
5.連接服務(wù)器
[self.socket connectToHost:host onPort:port error:&error]//返回值是BOOL類型的
6.發(fā)送數(shù)據(jù)
[self.socketwrite Data:msg DatawithTimeout:30 tag:123];//msg為Data類型
7.各協(xié)議使用
//成功鏈接到服務(wù)器后會(huì)回調(diào)的方法
- (void)socket:(GCDAsyncSocket*)sock didConnectToHost:(NSString*)host port:(uint16_t)port{
? //NSLog("Connect ?to the server successfully!");
//Or do something
}
//接收數(shù)據(jù)完成后會(huì)回調(diào)的方法
- (void)socket:(GCDAsyncSocket*)sock didReadData:(NSData*)data withTag:(long)tag;
//接收過程中會(huì)回調(diào)的方法? 主要用于查看接收進(jìn)度
- (void)socket:(GCDAsyncSocket*)sock didReadPartialDataOfLength:(NSUInteger)partialLength tag:(long)tag;
//發(fā)送數(shù)據(jù)完成后會(huì)回調(diào)的方法
- (void)socket:(GCDAsyncSocket*)sock didWriteDataWithTag:(long)tag;
//發(fā)送過程中會(huì)回調(diào)的方法 ?主要用于查看發(fā)送進(jìn)度
//當(dāng)某一讀/寫(下一個(gè)方法)任務(wù)達(dá)到超時(shí)時(shí)間,但還沒有完成時(shí),用于給當(dāng)前任務(wù)增加超時(shí)時(shí)間的方法(如果不實(shí)現(xiàn)該方法,任務(wù)會(huì)正常超時(shí)結(jié)束)
- (NSTimeInterval)socket:(GCDAsyncSocket*)sock shouldTimeoutReadWithTag:(long)tag?elapsed:(NSTimeInterval)elapsed?bytesDone:(NSUInteger)length;
- (NSTimeInterval)socket:(GCDAsyncSocket*)sock shouldTimeoutWriteWithTag:(long)tag?elapsed:(NSTimeInterval)elapsed?bytesDone:(NSUInteger)length;
先寫到這吧,以后慢慢加