一:前言(本文為TCP服務(wù)端)
TCP首先要服務(wù)器開(kāi)放一個(gè)端口 然后客戶端去連接服務(wù)端的IP地址和端口號(hào) 連接成功之后再進(jìn)行數(shù)據(jù)傳輸 要經(jīng)歷三次握手
二:代碼在GitHub
1.需要的工具類 自行下載

Scoket.png
2.部分代碼及其截圖
<1>創(chuàng)建TCP服務(wù)端Socket
self.serverSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
//開(kāi)始監(jiān)聽(tīng)(開(kāi)放哪一個(gè)端口)
NSError *error = nil;
BOOL result = [self.serverSocket acceptOnPort:[@"8000" integerValue] error:&error];
if (result) {
//開(kāi)放成功
NSLog(@"開(kāi)放成功");
}else{
//開(kāi)放失敗
NSLog(@"開(kāi)放失敗");
}
<2>發(fā)送數(shù)據(jù)
[self.clientSocket writeData:data withTimeout:-1 tag:0];
<3>代理
#pragma mark socketdelegate
//監(jiān)聽(tīng)到客戶端socket鏈接
//當(dāng)客戶端鏈接成功后,生成一個(gè)新的客戶端socket
- (void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{
NSLog(@"連接成功");
//connectedHost:地址IP
//connectedPort:端口
NSLog(@"%@",[NSString stringWithFormat:@"鏈接地址:%@",newSocket.connectedHost]);
//保存客戶端socket
self.clientSocket = newSocket;
[self.clientSocket readDataWithTimeout:-1 tag:0];
}
//成功讀取客戶端發(fā)過(guò)來(lái)的消息
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSString *message = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"成功讀取客戶端發(fā)過(guò)來(lái)的消息 = %@",message);
[self.clientSocket readDataWithTimeout:-1 tag:0];
}
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{
NSLog(@"消息發(fā)送成功");
}

TCP-Server.png