文档:http://www.cocoachina.com/ios/20160602/16572.html


socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行于服务器端,称为ServerSocket。套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接,UDP连接同理。

使用第三方框架:CocoaAsyncSocket

不会写服务器,用Tomcat进行测试,只能测试到连接成功以及断开连接,而且真机环境下,可能因为网络环境原因也同样访问不了:

注意:读写数据时需要手动进行。

//-1表示没有time限制
    [self.socket writeData:[NSData data] withTimeout:-1 tag:0];
    [self.socket readDataWithTimeout:-1 tag:0];

- (IBAction)SocketConnection:(UIButton *)sender {
//http://localhost:8080/
NSString *host = @"10.1.1.33";
int port = ; _socket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
NSError *error = nil;
//[_socket connectToHost:host onPort:port error:&error ];
[_socket connectToHost:host onPort:port withTimeout: error:&error];
if (error) {
NSLog(@"%@",error);
}
}
-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{
NSLog(@"%s,%@",__func__,@"连接成功");
} -(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{
if (err) {
NSLog(@"异常断开-%@",err);
}else{
NSLog(@"正常断开");
}
} -(void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{
NSLog(@"写数据");
} -(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
NSLog(@"读数据");
}

最新文章

  1. Android-LinearLayout(线性布局)
  2. JDBC 工具类
  3. JS 语言的Function 解析
  4. IOS第八天(7:UITableViewController新浪微博,cell 复用的简单写法优化和cell高度从模型中获取)
  5. Java IO流体系中常用的流分类
  6. 使用PPT制作交叉密文图
  7. EffectiveJava——类层次优于标签类
  8. struts2 标签字体大小
  9. 可以用google了
  10. Android开发之使用意图
  11. Android应用调试经常使用知识
  12. C/C++中peek函数的原理及应用
  13. 手把手教你用Strace诊断问题[转]
  14. git上传文件到coding
  15. python day12 ——1.生成器2.生成器表达式 3.列表推导式
  16. socket.io入门整理教程
  17. Hyberledger-Fabric 1.00 RPC学习(1)
  18. maven pom.xml中的 build说明
  19. HDU 1577 WisKey的眼神 (找规律 数学)
  20. Matplotlib——中级

热门文章

  1. WPF 打印界面(控件)到A4纸
  2. 【转】Windows Server 2016 安装 IIS 服务时提示指定备用源路径
  3. pika配置文件说明
  4. select2插件使用小记
  5. day 71 crm(8) 权限组件的设置,以及权限组件的应用
  6. redis缓存存在的隐患及其解决方案
  7. babel 7 简单指北
  8. 上台阶问题(递归,DFS)
  9. odoo开发笔记 -- 模型一对多tree视图弹窗效果实现
  10. 关于Python2和Python3之间的文本模型改变