网络通信

原创 2015年11月20日 16:00:03

用字符串来加载网页的html信息

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        var str = String()
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    //用字符串来加载网页的html信息
        do {  str = try NSString(contentsOfURL:NSURL(string: "http://jikexueyuan.com")!, encoding: NSUTF8StringEncoding) as String
    }
        catch {
            print("加载失误")
        }
    print(str)
    }
     override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

读成二进制的文件

import UIKit

class ViewController: UIViewController {
    var data = NSData()
    override func viewDidLoad() {
     
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //加载成二进制的数据
        data = ((NSData(contentsOfURL: ((NSURL(string: "http://www.baidu.com")))!)!))
        print(data)
    }
     override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

不过这样做一直会线程崩溃

以上这两种方式都是同步的,也就是主界面的UI是处于卡死状态的,用户是不能操作的,所以,这两种方法在操作本地的文件时,是可以用得,在操作网络数据时,不建议

import UIKit

class ViewController: UIViewController {
    var data = NSData()
    override func viewDidLoad() {
     
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //用同步加载 send来加载网络上得数据,先不回应得到数据后的应答
        
        
        do { var data = try NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), returningResponse: nil)
    }
        catch {
            print("error")
        }
        //转化成字符串类型输出 原先是二进制的类型
                  print(NSString(data: data, encoding: NSUTF8StringEncoding))
        
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

应答头是http协议的数据 

所以先定义

var resp:NSURLResponse?

再将其地址传入

 do { var data = try NSURLConnection.sendSynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), returningResponse: &resp)

实质上错误已经在抛出异常时处理了

异步的处理,实质上是为了防止主界面线程UI的占用

import UIKit
import SystemConfiguration
class ViewController: UIViewController {
   
    override func viewDidLoad() {
     
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        //异步请求数据,是为了不影响用户的主界面。来下载数据 不能够影响主队列
        NSURLConnection.sendAsynchronousRequest(NSURLRequest(URL: NSURL(string: "http://www.baidu.com")!), queue: NSOperationQueue()) { (resp:NSURLResponse?, data:NSData?, error:NSError?) -> Void in
            if let e = error {
                print("发生错误")
            }else {
                print(NSString(data: data! , encoding: NSUTF8StringEncoding))
            }
        }
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

基于nio的java网络通信框架介绍和选择

Java NIO框架Mina、Netty、Grizzly介绍与对比 Mina Mina(Multipurpose Infrastructure for Network Applications) ...
  • aosnowasp
  • aosnowasp
  • 2014年12月08日 23:54
  • 978

Android中网络通信的几种方式

Android网络编程分为两种:基于http协议的,和基于socket的。 基于Http协议:HttpClient、HttpURLConnection、AsyncHttpClient框架等 基于Soc...
  • wdong_love_cl
  • wdong_love_cl
  • 2016年06月02日 23:11
  • 3370

Android网络通信之Socket

Android网络通信有两种方式:一种是基于HTTP协议,另一种是基于Socket(套接字)。本文只粗浅探讨一下基于Socket的Android网络通信。本文所有的观点都经过作者的实践证明过,并可行。...
  • qq_15704921
  • qq_15704921
  • 2016年05月07日 11:41
  • 254

网络通信过程-非常详细

请用心去阅读一下文档,谢谢  Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲中会涉及到网络(或Internet)的专业术语、概念及In...
  • lihuibo128
  • lihuibo128
  • 2014年08月26日 09:39
  • 3878

Android开发之网络通讯详解

真正的才智是刚毅的志向
  • dmk877
  • dmk877
  • 2016年03月16日 21:36
  • 5676

Network——Socket网络通信机制以及实现举例(TCP、UDP等)

两个传输协议之一:TCP TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年07月22日 17:23
  • 11997

VC网络通信API概览

1.WinSock API Windows Sockets是在Windows环境下使用的一套网络编程规范,常常简称为Winsock。 WinSock主要是基于socket来开发基于TCP/...
  • liujiayu2
  • liujiayu2
  • 2015年06月16日 14:12
  • 384

【Unity3D入门教程】网络通信

Unity之前都是使用RPC来进行网络通信的,后来在Unity5中有了UNET,使得开发多人在线网络游戏变得非常简单。本文将会介绍使用新网络模块UNET开发游戏的简单方法。...
  • zzlyw
  • zzlyw
  • 2017年01月10日 18:32
  • 4562

Android网络通信的六种方式

Google的应用层采用的是Java语言。所以JAVA支持的网络编程方式Android都支持,同时Google还引入了Apache 的HTTP扩展包。另外,针对WIFI,NFC,分别提供的单独的开发A...
  • zhuxiaoping54532
  • zhuxiaoping54532
  • 2016年06月20日 16:14
  • 829

Qt开发:TCP和UDP网络通信

【原文】http://wuyuans.com/2013/03/qt-socket/ 这篇文章简洁清晰 TCP 客户端 #include QTcpSocket *client; char ...
  • u012234115
  • u012234115
  • 2015年06月13日 23:13
  • 1634
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络通信
举报原因:
原因补充:

(最多只允许输入30个字)