iOS Socket开发总结~笔记

时间:2022-12-09 15:39:18

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄

一、 OSITCP/IP参考模型

IOS参考模型七层的作用

同一节点相邻层次间通过接口通信

各节点相同层次通过协议实现

TCP/IP参考模型简化


二、网络通讯要素

使用端口号的范围

ping的回环地址(网上没问题)Ping IP(网络没问题),域名、DNS

本地域名缓存/etc/hosts (画图演示DNS hosts)

TCP/UDP

URL ftp:http

演示telnet解决工作中常见问题


iVincent:~ Vincent_Guo$ telnet 220.181.111.18880


Trying 220.181.111.188...


Connected to 220.181.111.188.


Escape character is '^]'.


GET /more/ HTTP/1.1


host:www.baidu.com

三、 socket聊天

启动聊天服务器 Python chatserver.py

键盘动画[self.view layoutIfNeeded];

连接到主机,分配输入输出流空间

建立长连接CFStreamCreatePairWithSocketToHost

将语言的输入输出流转成OC对象

设置代表监听输入输出流的状态

添加到主运行循环,否理代理不工作

[_inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];


打开输入输出流

登录发送

NSString *loginStr = [NSString stringWithFormat:@"iam:zhangsan"];


NSData *data = [loginStr dataUsingEncoding:NSUTF8StringEncoding];


[_outputStream write:data.bytes maxLength:data.length];


数据读取

//建立个缓冲区来保存读取到的数据


uint8_t buffer[1024];


//返回实际读取的数据长度


NSInteger len = [_inputStream read:buffer maxLength:sizeof(buffer

                                                           

//有数据


if (len > 0) {

   

   NSString *reveiver =  [[NSString alloc] initWithBytes:buffer length:len encoding:NSUTF8StringEncoding];

   

}


断开连接要关闭输入输出流并移除主运行循环

回顾

netstat -an -p tcp 查看所有开放的端口查看连接状态


谢谢!!!