网络必须首先了解的基本知识

2024-08-28 16:18

本文主要是介绍网络必须首先了解的基本知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在网络编程中,有几个必须掌握的基本概念

客户端(Client):移动应用(iOS、android等应用)

服务器(Server):为客户端提供服务、提供数据、提供资源的机器

请求(Request):客户端向服务器索取数据的一种行为

响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端

作为移动开发工程师,主要的精力都是放在前端开发


服务器:

按照软件开发阶段来分,服务器大致可以分为2种

(一)远程服务器:

别名:外网服务器、正式服务器。

使用阶段:应用上线后使用的服务器。

使用人群:共全体用户使用。

速度:取决于服务器的性能、用户的网速。

(二)本地服务器:

别名:内网服务器、测试服务器。

使用阶段:应用处于开发、测试阶段使用的服务器。

使用人群:仅供公司内部的开发人员、测试人员使用。

速度:由于是局域网,所以速度飞快,有助于提高开发测试效率。

本地服务器的选择:

如果处于学习、开发阶段,自己搭建一个本地服务器即可。

选择怎样的本地服务器?:

在公司开发阶段,已经有专门的后端人员开发服务器程序,不由得你选择。

在学习阶段,选择什么样的本地服务器都可以,能用即可。当前选择Apache服务器。


请求数据的基本步骤如下:

第一步:首先确定一个要访问的资源比如m.jd.com京东手机网站,m表示手机网站地址。如下所示:

NSURL *url = [NSURLURLWithString:@"http://m.baidu.com"];

第二步:建立一个请求,即告诉服务器,我们客户端所需要的资源。一般的请求就是建立NSURLRequest类的对象,如果有特殊要求比如要求是苹果版的网站就需要使用NSMutableURLRequest类,并为特定的键赋值。如下所示:

NSURLRequest *request = [NSURLRequest requestWithURL:url];

NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];

     //主动告诉浏览器客户端的类型—— iPhone

[request setValue:@"Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko)"forHTTPHeaderField:@"User-Agent"];

第三步:给服务器发送请求,等服务器处理完成后 返回数据(结果)

 [NSURLConnectionsendAsynchronousRequest:request queue:[[NSOperationQueuealloc] init]completionHandler:^(NSURLResponse *response,NSData *data, NSError *connectionError) {

       // 服务器的相应数据返回后会调用这块代码

}];

代码示例如下所示:

新建工程。拖进一个WebView控件,并适配屏幕如下所示


拖线后,代码如下:

<span style="font-size:18px;">//
//  ViewController.m
//  最常见的网络访问方法
//
//  Created by apple on 15/10/25.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//#import "ViewController.h"@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIWebView *webView;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// 1. 确定一个要访问的资源 m.jd.com 京东手机网站NSURL *url = [NSURL URLWithString:@"http://m.baidu.com"];// 2. 建立一个请求, 告诉服务器端,我们客户端需要的资源//    NSURLRequest *request = [NSURLRequest requestWithURL:url];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];// 主动告诉浏览器客户端的类型—— iPhone[request setValue:@"Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko)" forHTTPHeaderField:@"User-Agent"];// 3. 把请求发送给服务器, 等服务器处理完成后,返回数据(结果)[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {// 服务器的相应数据返回后会调用这块代码//        [data writeToFile:[NSHomeDirectory() stringByAppendingPathComponent:@"123"] atomically:YES];//        NSLog(@"%@", NSHomeDirectory());// 编码 —— 注意网络请求的时候返回的都是二进制数据,但是可以进行转换NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"%@", html);[self.webView loadHTMLString:html baseURL:nil];}];}
@end
</span>


这篇关于网络必须首先了解的基本知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115256

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

poj 2112 网络流+二分

题意: k台挤奶机,c头牛,每台挤奶机可以挤m头牛。 现在给出每只牛到挤奶机的距离矩阵,求最小化牛的最大路程。 解析: 最大值最小化,最小值最大化,用二分来做。 先求出两点之间的最短距离。 然后二分匹配牛到挤奶机的最大路程,匹配中的判断是在这个最大路程下,是否牛的数量达到c只。 如何求牛的数量呢,用网络流来做。 从源点到牛引一条容量为1的边,然后挤奶机到汇点引一条容量为m的边

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络

配置InfiniBand (IB) 和 RDMA over Converged Ethernet (RoCE) 网络 服务器端配置 在服务器端,你需要确保安装了必要的驱动程序和软件包,并且正确配置了网络接口。 安装 OFED 首先,安装 Open Fabrics Enterprise Distribution (OFED),它包含了 InfiniBand 所需的驱动程序和库。 sudo

【机器学习】高斯网络的基本概念和应用领域

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Process)1.2 高斯混合模型(Gaussian Mixture Model)1.3 应用1.4 总结 二、高斯网络的应用2.1 机器学习2.2 统计学2.3

网络学习-eNSP配置NAT

NAT实现内网和外网互通 #给路由器接口设置IP地址模拟实验环境<Huawei>system-viewEnter system view, return user view with Ctrl+Z.[Huawei]undo info-center enableInfo: Information center is disabled.[Huawei]interface gigabit