1.初始化socket
// 1.創(chuàng)建一個(gè)socket
/*
domain: 協(xié)議域 IPV4 ,IPV6
type: socket 類型 SOCKET_STREAM(TCP) / SOCK_DGRAM(UDP)
protocol: TCP ? UDP ? 0 ,自動(dòng)根據(jù)第二個(gè)參數(shù)來決定合適的協(xié)議
*/
int cr_Socket = socket(AF_INET, SOCK_STREAM, 0);
2.連接服務(wù)器
// 2.連接服務(wù)器
struct sockaddr_in cr_sever_Addr;
cr_sever_Addr.sin_family = AF_INET;
// 端口
cr_sever_Addr.sin_port = htons(8866);
// ip地址
cr_sever_Addr.sin_addr.s_addr = inet_addr("127.0.0.1");
/*
參數(shù)1:客戶端的socket
參數(shù)2:指向數(shù)據(jù)結(jié)構(gòu)sockaddr_in 的指針看铆,其中包括端口、IP地址
參數(shù)3:結(jié)構(gòu)體數(shù)據(jù)的長度
*/
int connectedResult = connect(cr_Socket, (const struct sockaddr * )&cr_sever_Addr, sizeof(cr_sever_Addr));
if (connectedResult == 0) {
NSLog(@"連接成功盛末!");
} else {
NSLog(@"連接失數搿:%d",connectedResult);
}
while (connectedResult == 0) {
//從服務(wù)器去接收數(shù)據(jù)
}
3.發(fā)送數(shù)據(jù)給服務(wù)器
// 3.發(fā)送數(shù)據(jù)給服務(wù)器
/*
參數(shù)1:客戶端的socket
參數(shù)2:發(fā)送內(nèi)容的地址
參數(shù)3:發(fā)送內(nèi)容的長度
參數(shù)4:發(fā)送方式的標(biāo)志,一般都0
*/
NSString *sendMsg = @"Hello word!";
ssize_t sendLen = send(_cr_Socket, sendMsg.UTF8String, strlen(sendMsg.UTF8String), 0);
NSLog(@"發(fā)送內(nèi)容是:%@, 共%ld字符",sendMsg, sendLen);
4.從服務(wù)器去接收數(shù)據(jù)
// 4.從服務(wù)器去接收數(shù)據(jù)
uint8_t buffer[1024];
/*
參數(shù)1:客戶端的socket
參數(shù)2:接收內(nèi)容的緩存區(qū)地址
參數(shù)3:接收內(nèi)容的長度
參數(shù)4:接收的方式悄但,0肤频,表示阻塞,必須等待服務(wù)器返回?cái)?shù)據(jù)
返回值:成功:讀入的字節(jié)數(shù)據(jù)
失斔隳:
*/
ssize_t recvLen = recv(_cr_Socket, buffer, sizeof(buffer), 0);
NSData *data = [NSData dataWithBytes:buffer length:recvLen];
NSString *recStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"接收了%ld字節(jié)數(shù)據(jù)",recvLen);
NSLog(@"%@",recStr);