生活随笔
收集整理的這篇文章主要介紹了
iOS进阶_Socket(Socket简介代码演练)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網絡通訊三要素
?
TCP & UDP
?
三次握手
?
斷開連接的四次握手
?
Socket套接字
?
?
了解了上面的概念,我們開始演練一下Socket
#import "ViewController.h"
#import <sys/socket.h>
#import <netinet/
in.h>
#import <arpa/inet.h>
@interface ViewController ()@end@implementation ViewController- (
void)viewDidLoad {[super viewDidLoad];[self socketDemo];
}#pragma mark - <socket演練>
-(
void)socketDemo{//1.創建socket/**參數domain: 協議域,AF_INET -> IPV4type: Socket 類型,SOCK_STREAM/SOCK_DGRAMprotocol: IPPROTO_TCP,如果傳入0 那么會自動根據第二個參數選擇合適的協議返回值socket*/int clientSocket = socket(AF_INET, SOCK_STREAM,
0);//2.連接到服務器/**參數1> 客戶端socket2> 指向數據結構sockaddr的指針,其中包括目的端口和IP地址3> 結構體數據長度返回值0 成功/其他 錯誤代號*/struct sockaddr_in severAddr;severAddr.sin_family = AF_INET;
//協議域//端口severAddr.sin_port = htons(
80);//地址severAddr.sin_addr.s_addr = inet_addr(
"127.0.0.1");int connResult = connect(clientSocket, (
const struct sockaddr *)&severAddr,
sizeof(severAddr));if (connResult ==
0) {NSLog(@"連接成功!!");}else{NSLog(@"失敗了 %d",connResult);return;}//3.發送數據給服務器/**參數1> 客戶端socket2> 發送內容地址3> 發送內容長度4> 發送方式標志,一般為0返回值如果成功,則返回發送的字節數,失敗則返回SOCKET_ERROR*/NSString * sendMsg =
@"Hello你好,約嘛";ssize_t sendLen = send(clientSocket, sendMsg.UTF8String, strlen(sendMsg.UTF8String),
0);NSLog(@"發送了%ld個字節",sendLen);//4.從服務器接受數據/**參數1> 客戶端socket2> 接收內容緩沖區地址3> 接收內容緩存區長度4> 接收方式,0表示阻塞,必須等待服務器返回數據返回值如果成功,則返回讀入的字節數,失敗則返回SOCKET_ERROR*/uint8_t buffer[1024];
//要把空間準備出來!
ssize_t recvLen = recv(clientSocket, buffer,
sizeof(buffer),
0);NSLog(@"接收到了%ld個字節",recvLen);//5.關閉socket連接
close(clientSocket);
}@end ?
轉載于:https://www.cnblogs.com/Free-Thinker/p/10437205.html
總結
以上是生活随笔為你收集整理的iOS进阶_Socket(Socket简介代码演练)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。