iOS 电话/短信/邮件/UIApplication

 1,打电话的三种方式:
1⃣️
• *简单*直接的⽅方式:直接跳到拨号界⾯面

NSURL *url = [NSURL URLWithString:@”tel://10010″];

[[UIApplication sharedApplication] openURL:url];
• 缺点电话打完后,不会⾃自动回到原应⽤用,直接停留在通话记录界⾯面

2⃣️

• 拨号之前会弹框询问⽤用户是否拨号,拨完后能⾃自动回到原应⽤用
NSURL *url = [NSURL URLWithString:@”telprompt://10010″];

[[UIApplication sharedApplication] openURL:url];
• 缺点因为是私有API,所以可能不会被审核通过

3⃣️
一般用这个
• 创建⼀一个UIWebView来加载URL,拨完后能⾃自动回到原应⽤用
_webView = [[UIWebView alloc] initWithFrame:CGRectZero];

[_webView loadRequest:[NSURLRequest requestWithURL:[NSURLURLWithString:@”tel://10010″]]];需要注意的是:这个webView千万不要添加到界⾯面上来,不然会挡住其他界⾯面
———————————————————————————

2发短信的两种方式:

1⃣️
• 直接跳到发短信界⾯面,但是不能指定短信内容,⽽而且不能⾃自动回到原应⽤用
NSURL *url = [NSURL URLWithString:@”sms://10010″];
[[UIApplication sharedApplication] openURL:url];

2⃣️

• 如果想指定短信内容,那就得使⽤用MessageUI框架• 包含主头⽂文件
#import <MessageUI/MessageUI.h>

• 显⽰示发短信的控制器

  1  MFMessageComposeViewController *vc = [[MFMessageComposeViewController alloc] init];
  2 
  3         // 设置短信内容
  4 
  5         vc.body = @"吃饭了没?";
  6 
  7         // 设置收件人列表
  8 
  9         vc.recipients = @[@"10010", @"02010010"];
 10 
 11         // 设置代理
 12 
 13         vc.messageComposeDelegate = self;
 14 
 15         
 16 
 17         // 显示控制器
 18 
 19         [self presentViewController:vc animated:YES completion:nil]; 
 20 
 21  实现代理方法:
 22 
 23 • 代理⽅方法,当短信界⾯面关闭的时候调⽤用,发完后会⾃自动回到原应⽤用
 24 
 25 - (void)messageComposeViewController:(MFMessageComposeViewController *)controllerdidFinishWithResult:(MessageComposeResult)result
 26 { // 关闭短信界⾯面
 27 
 28  *  点击取消按钮会自动调用
 29 
 30  */
 31 
 32  
 33 [controller dismissViewControllerAnimated:YES completion:nil];
 34 if (result == MessageComposeResultCancelled) {NSLog(@"取消发送");
 35 
 36 } else if (result == MessageComposeResultSent) {NSLog(@"已经发出");
 37 
 38 } else {NSLog(@"发送失败"); 
 39 }
 40 } 
 41 --------------------------------
 42 3,发邮件
 43  
 44 
 45 • 跟发短信的第2种⽅方法差不多,只不过控制器类名叫做:MFMailComposeViewController
 46 • 假设发送的邮件内容如右图所⽰示,代码实现看备注 
 47 
 48 // 不能发邮件
 49 
 50 //        if (![MFMailComposeViewController canSendMail]) return;
 51 
 52         
 53 
 54         MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
 55 
 56         
 57 
 58         // 设置邮件主题
 59 
 60         [vc setSubject:@"会议"];
 61 
 62         // 设置邮件内容
 63 
 64         [vc setMessageBody:@"今天下午开会吧" isHTML:NO];
 65 
 66         // 设置收件人列表
 67 
 68         [vc setToRecipients:@[@"643055866@qq.com"]];
 69 
 70         // 设置抄送人列表
 71 
 72         [vc setCcRecipients:@[@"1234@qq.com"]];
 73 
 74         // 设置密送人列表
 75 
 76         [vc setBccRecipients:@[@"56789@qq.com"]];
 77 
 78         
 79 
 80         // 添加附件(一张图片)
 81 
 82         UIImage *image = [UIImage imageNamed:@"lufy.png"];
 83 
 84         NSData *data = UIImagePNGRepresentation(image);
 85 
 86         [vc addAttachmentData:data mimeType:@"image/png" fileName:@"lufy.png"];
 87 
 88         
 89 
 90         // 设置代理
 91 
 92         vc.mailComposeDelegate = self;
 93 
 94         // 显示控制器
 95 
 96         [self presentViewController:vc animated:YES completion:nil];
 97 
 98     };
 99 
100     
101 
102  
103  • 邮件发送后的代理⽅方法回调,发完后会⾃自动回到原应⽤用
104 
105 /**
106 
107  *  点击取消按钮会自动调用
108 
109  */
110 
111  
112 
113 - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
114 
115 {
116 
117     [controller dismissViewControllerAnimated:YES completion:nil];
118 
119 if (result == MFMailComposeResultCancelled) {NSLog(@"取消发送");
120 
121 } else if (result == MFMailComposeResultSent) {NSLog(@"已经发出");
122 
123 } else {NSLog(@"发送失败");
124 
125  
126 
127 }

 

---------------------

4,打开其他文件:

打开其他常见⽂文件

• 如果想打开⼀一些常见⽂文件,⽐比如html、txt、PDF、PPT等,都可以使⽤用UIWebView打开

• 只需要告诉UIWebView⽂文件的URL即可
• ⾄至于打开⼀一个远程的共享资源,⽐比如http协议的,也可以调⽤用系统⾃自带的

Safari浏览器:
NSURL *url = [NSURL URLWithString:@”http://www.baidu.com“];

[[UIApplication sharedApplication] openURL:url];
----------------------
5,应用间的跳转:
图片

应⽤用评分

• 为了提⾼高应⽤用的⽤用户体验,经常需要邀请⽤用户对应⽤用进⾏行评分
• 应⽤用评分⽆无⾮非就是跳转到AppStore展⽰示⾃自⼰己的应⽤用,然后由⽤用户⾃自⼰己撰写评论

• 如何跳转到AppStore,并且展⽰示⾃自⼰己的应⽤用➢ ⽅方法1

1 NSString *appid = @"444934666";
2  NSString *str = [NSString stringWithFormat: @"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", appid];
3 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
4 ➢ ⽅方法2
5 NSString *str = [NSString stringWithFormat:
6 
7 @"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid]; 
8 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]]; 
9

 

[XMPP]iOS聊天软件学习笔记[一]

通过前面的学习后,准备开始正式自己写一个项目

开发时间:五天(工作时间)

开发工具:xcode6

开发平台:iOS8

XMPP框架:XMPPFramework

git clone https://github.com/robbiehanson/XMPPFramework.git

界面设计:使用StoryBoard

github地址:https://github.com/hjandyz/XMPP

 

*天基本完成了“其他登陆”界面,这里只将注意点做笔记

1.枚举和block的定义并用于回调

typedef enum {

XMPPResultTypeLoginSuccess,

XMPPResultTypeLoginFailure,

XMPPResultTypeNetErr

}XMPPResultType;

typedef void (^XMPPRresultBlock)(XMPPResultType type);

 

if (error && _resultBlock) {

_resultBlock(XMPPResultTypeNetErr);

}

if (_resultBlock) {

_resultBlock(XMPPResultTypeLoginSuccess);

}

2.block内要把self设置成弱指针

__weak typeof (self) weekSelf = self;

[delegate xmppUserLogin:^(XMPPResultType type) {

[weekSelf handleResultTye:type];

}];

3.切换rootViewComtroller时记得dismiss模态窗口,不然会造成内存泄漏

//隐藏模态窗口

[self dismissViewControllerAnimated:YES completion:nil];

4.建立新连接前如果已经建立过连接要断开

//如果以前连接过要断开

[_XMPPStream disconnect];

//连接主机

[self connentToHost];

5.MBProgressHUD如果view为nil会显示到window上面去

[MBProgressHUD showHUDAddedTo:view animated:YES]

6.自定义Log的方法

//自定义log

#ifdef DEBUG

#define HJLog(…) NSLog(@”%s %@”,__func__,[NSString stringWithFormat:__VA_ARGS__])

#else

#define HJLog(…)

#endif

iOS 设备屏幕上实时打印 Log 的小工具

需求

写这个小工具的想法,主要来源于很多团队都会用友盟、TalkingData 等第三方框架做自定义事件统计;不过统计代码加好之后,没有很好的方法来让测试工程师验证一下事件加上了没有,调用次数有没有重复等。

所以写了这个小工具,是一个保持在*前的 UIWindow,可以实时打印 log。

%title插图%num%title插图%num

源码地址

 

源码是用 Objective-C 写的,放在 github 上了。

https://github.com/DaiYue/HAMLogOutputWindow

 

用法

 

集成

 

只需把 HAMLogOutputWindow.h、HAMLogOutputWindow.m 两个文件加到工程中。如果您使用友盟或者 TalkingData 做事件统计,也可以加进来 demo 工程中的 HAMStatisticsManager.h 和 HAMStatisticsManager.m。

 

开启

 

启用这个 debug 窗口非常简单,只需一行代码:

 

[[HAMLogOutputWindow sharedInstance] setHidden:NO];

 

您可以把这行代码加到 AppDelegate.m 里,例如:

 

#define SHOW_STATISTICS_DEBUG 1

 

@implementation AppDelegate

 

– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

 

#if DEBUG && SHOW_STATISTICS_DEBUG

[[HAMLogOutputWindow sharedInstance] setHidden:NO];

#endif

 

return YES;

}

 

不需显示 时把 define 的1改为0即可,也保证了在 release 版本中不会出现。

 

输出和清空 log

 

输出 log:

 

[HAMLogOutputWindow printLog:@”some log”];

 

输出的 log 会滚动显示在 debug 窗口中,末尾会自动添加换行。*新的 log(0.1s 之内)会显示为黄色,之前的会显示为白色。

 

如需清空 log,只需调用:

 

[HAMLogOutputWindow clear];

 

源码解释

 

HAMLog

 

用来存储 log 信息的 model 类。有两个属性,时间戳和具体的 log 内容。

 

HAMLogOutputWindow

 

是一个单例的 Window,里面有一个 UITextView 用来显示 log。windowLevel 设为 UIWindowLevelAlert 所以能保持在*前。userInteractionEnabled 设为 NO,这样屏幕触摸事件会传递到下层的实际 view 上去,不会挡住测试的操作。

 

打印 log 的时候,建立一条 log 对象存进 logs 数组里。logs 数组实际是个队列,超出 20 条之后就会抛弃*旧的一条。之后调用 refreshLogDisplay 刷新 log 的显示。

 

在 refreshLogDisplay 这个方法中,首先根据 logs 数组构造一个 attributedString。其中时间戳与当前时间相差 0.1s 以内的,显示为黄色,否则显示为白色。这样就能在视觉上把前后关联比较紧密的 log 同时高亮,比如点击 tab 和相应 viewController 的 viewWillAppear 两个统计事件。

 

*后用以下代码让显示 log 的 UITextView 滚动到底部。

 

NSRange bottom = NSMakeRange(attributedString.length – 1, 1);

[self.textView scrollRangeToVisible:bottom];

 

iOS之获取当前时间日期并按固定格式显示

写一个常用的获取当前日期,时间的代码。并且能以规定的格式显示出来

1
2
3
4
5
NSDate *currentDate = [NSDate date]; //获取当前时间,日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@ "YYYY/MM/dd hh:mm:ss SS" ];
NSString *dateString = [dateFormatter stringFromDate:currentDate];
NSLog(@ "dateString:%@" ,dateString);

这样就能按照规定的格式显示日期,时间了。

1
dateString:2015/01/03 08:01:20 24

说明下格式对应的意义
YYYY(年)/MM(月)/dd(日) hh(时):mm(分):ss(秒) SS(毫秒)
需要用哪个的话就把哪个格式加上去。
值得注意的是,如果想显示两位数的年份的话,可以用”YY/MM/dd hh:mm:ss SS”,两个Y代表两位数的年份。
而且大写的M和小写的m代表的意思也不一样。“M”代表月份,“m”代码分钟
“HH”代表24小时制,“hh”代表12小时制

iOS chart 图表完美解决方案 基于swift

如果打算在app中使用图标功能,这个框架基本能够满足90%的需求

下边是作者的框架的下载地址 ,基于swift2.0

https://github.com/danielgindi/ios-charts.git

只需要把demo中的chart 下的文件classf

xcode中做如下设置

%title插图%num%title插图%num

 

在使用框架的界面导入一下的头文件‘

#import “hello-Swift.h”

其中的hello 是工程的文件名称,主要作用也是oc和swift的桥接文件

iOS控制台打印NSLog增强版

在宏定义这样一个Log输出、可以输出当前类的函数中的多少行的打印,以及打印的内容。可以试试:
#ifdef DEBUG
#define NSSLog(fmt, …) {NSLog((@”%s [Line %d] ” fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);}
#else
#define NSSLog(…)
#endif

阿里云的 443 端口是否不封

如果未备案域名挂到阿里云上,开启 SSL ,是否可行
阿里云 SSL 域名 端口19 条回复 • 2015-12-27 17:42:39 +08:00
ryd994 1
ryd994 2015-10-23 04:28:46 +08:00
只要不是 HTTP 协议就没事
virusdefender 2
virusdefender 2015-10-23 05:36:48 +08:00 via Android
是的 我就这么用
GeekTest 3
GeekTest 2015-10-23 06:52:45 +08:00 via Android
然而你还要用 80 端口做 301
Joway 4
Joway 2015-10-23 07:03:56 +08:00
没用的, ssl 对域名并不加密,阿里云还是能够检测到的。我之前就这么试过,然后过了一个星期来电话了。。。
kn007 5
kn007 2015-10-23 07:21:53 +08:00
可以使用,但你必须有备案行为。
imlonghao 6
imlonghao 2015-10-23 07:27:23 +08:00 via Android
自封 80 端口,每个网站都有 SSL 证书
我就是这样用的
wzxjohn 7
wzxjohn 2015-10-23 07:38:38 +08:00
@Joway 不开启 SNI 的情况下 SSL 完全不会暴露域名哦。。。
gamexg 8
gamexg 2015-10-23 08:23:06 +08:00 via Android
@wzxjohn *近在研究 ssl ,不管有没有 sni ,服务器都会在握手阶段发出服务器证书,里面就有域名。
如果使用 sni ,那么客户端的 hello 消息里面也包含服务器域名。
virusdefender 9
virusdefender 2015-10-23 08:33:42 +08:00 ❤️ 1
@Joway 我没备案用 https 好几个月了都没事呢
Andy1999 10
Andy1999 2015-10-23 08:37:43 +08:00 via iPhone
我没备案 腾讯云拦截我开 HTTPS+HSTS
过了几天 80 都不管了
Cannikin 11
Cannikin 2015-10-23 08:41:59 +08:00
家里原来只封 80 的 in 方向流量,现在 443 也封了。
上次还断我网,让我关了网站才解封宽带。
wzxjohn 12
wzxjohn 2015-10-23 09:24:16 +08:00
@gamexg 证书会包含域名没错,但是并不代表域名会暴露,因为我可以完全无视警告消息用不是证书里面的域名访问的呀。
janecc 13
janecc 2015-10-23 09:56:54 +08:00
直接走 https 不用 80 端口,阿里云可以???
Shieffan 14
Shieffan 2015-10-23 10:51:12 +08:00
不行,亲身试验过,不用再试了。

tls sni extension 暴漏了域名,阿里云检测得出来
R18 15
R18 2015-10-23 10:52:35 +08:00
过一段时间就会被查出来
janecc 16
janecc 2015-10-23 11:19:07 +08:00
好吧,没卵用啊
liangguan5 17
liangguan5 2015-10-24 13:33:03 +08:00 via iPhone
livid 也许知道如何不备案使用阿里云
kylinj 18
kylinj 2015-10-24 15:19:38 +08:00
不封。。但不能用 80 端口重定向,需要直接 https 前缀访问,当然,有 SSL 证书的话,输了一次完整的,下次浏览器会自动 https 了
foru17 19
foru17 2015-12-27 17:42:39 +08:00
不行,刚刚测试,提示要未备案

阿里云未备案网站的封锁策略是?

看了 http://www.v2ex.com/t/230352 这帖, 443 端口是否封锁各有说法。

昨晚解析了一个二级域名到阿里云,到现在还没被封(没显示 404 或其它什么提示页)。所以 80 端口的封锁应该是事后进行的,而不是*次访问阿里云的时候检测?

如果我 80 和 443 端口都不使用的话,用其它端口跑 web 服务,不知道有没有问题,有这样操作过的同学吗?因为搭建的都是自用服务,所以不是 80 和 443 端口也没关系,也就地址多输一下端口号。

如果我不做 DNS 解析,改本地 hosts 文件,比如讲 domain.com 指向阿里云的 ip ,那这种情况又会不会被封?

谢谢各位回答。
端口 阿里云 封锁 解析29 条回复 • 2015-11-17 09:59:09 +08:00
xfspace 1
xfspace 2015-10-31 12:28:05 +08:00 ❤️ 2
听过 防火墙 吗。。。在 网络出口 处的防火墙直接阻断端口 80 流量。
其他端口不封。
lolicon 2
lolicon 2015-10-31 12:52:31 +08:00 via Android ❤️ 1
那你直接 ip :端口访问得了,*保险
至于封锁政策,会变化的…
HentaiMew 3
HentaiMew 2015-10-31 12:55:41 +08:00 ❤️ 1
我见过直接阻断任何端口流量的,只要是域名解析过来的
oott123 4
oott123 2015-10-31 12:57:40 +08:00 ❤️ 1

没有问题
不会
qinix 5
qinix 2015-10-31 12:58:15 +08:00 ❤️ 1
1 、 443 端口封不了
2 、其他端口都不封
3 、改 hosts 如果还是 80 端口的话也会被封

检测方式大概是,防火墙会看你 80 端口的 http 数据包,如果出现未备案域名的话就会封。这个封锁是有缓存的,所以会过一段时间以后封,不是立马生效

这是很久以前发现的,不知道现在改了没有,如果现在阿里云改了封锁策略的话轻喷。。
billlee 6
billlee 2015-10-31 13:07:49 +08:00 ❤️ 1
8080 端口上的 HTTP 也会被封。今年 4 到 6 月的测试结果。
yanw 7
yanw 2015-10-31 13:41:30 +08:00
@xfspace 阻断某个域名 80 端口的全部流量这个是可以理解的,按目前的表现来看,应该就是我说的,是事后处理吧。

@lolicon 同意封锁策略会变化这个说法,主要是不清楚阿里云对工信部的态度如何。是敷衍了事呢,还是积*配合。如果是敷衍了事的话,那封锁策略应该就不会太严格,也就做做样子给工信部看。如果是积*配合的话,估计也就你说的 ip 访问*靠谱。我自己部署的服务,有个程序要求安装在根路径下,不能是子路径,所以有办法实现二级域名访问是*好的。

@HentaiMew 哈?这么严格,所以只能 ip 访问了?那个站被工信部重点盯上了吧?

@oott123 言简意赅,赞。想了解下你是否这样操作过哈?

@qinix 谢谢你这么详细的回答哈,就是不知道阿里云发现你执意不备案的话(工信部没介入的情况下,比如工信部下通知),会否直接拔网线。不过想想拔网线貌似也不太可能,不然的话,我只用 ip 访问,别人一个未备案的域名指过来,那不是被坑了?

@billlee 测试过的答案靠谱,我自己搜索了下,也有看到 8080 端口会被封的说法。
qinix 8
qinix 2015-10-31 13:44:12 +08:00 via iPhone
@yanw 没备案的域名只是访问不了而已…不会拔网线吧
alect 9
alect 2015-10-31 14:46:57 +08:00 ❤️ 1
流量监测,一定会封的。
Showfom 10
Showfom 2015-10-31 15:24:41 +08:00 ❤️ 1
@oott123 访问量大了以后会的, 8080 都会封锁
pupboss 11
pupboss 2015-10-31 15:58:19 +08:00 ❤️ 1
API 的 443 端口目前近一周了,还没被封锁,请求量大概是每天十万吧,网站的访问不多,同 443 未被封
yanw 12
yanw 2015-10-31 17:06:54 +08:00
@qinix 脑洞而已哈,并无依据。

@alect 测试过?

@pupboss 有理有据,我打算实践一下 https 访问。
des 13
des 2015-10-31 17:09:35 +08:00 via Android
只要是 http 都可能被封,*靠谱的是走 https ,然后不开那个什么功能来着
yanw 14
yanw 2015-10-31 17:34:37 +08:00
@des 不开啥?拜托想起来,哈哈。是 tls sni extension 这个吗?
pupboss 15
pupboss 2015-10-31 18:39:31 +08:00
@yanw 但是我的域名正在备案…长期这么搞恐怕不行。对了,用 ip+端口的方式访问,这个是确定的没有问题,因为我身边就有这么干的,半年多了
yanw 16
yanw 2015-10-31 18:41:44 +08:00
@pupboss 谢谢告知, ssl 先用着。后面再考虑备案或直接用 ip 访问。
virusdefender 17
virusdefender 2015-10-31 20:01:49 +08:00 ❤️ 1
443 用了几个月了,都没事。但是阿里云客服的说法是使用域名都要备案
des 18
des 2015-10-31 20:26:41 +08:00 via Android ❤️ 1
@yanw 对,是这个
virusdefender 19
virusdefender 2015-10-31 20:28:40 +08:00
@yanw SNI 怎么禁用
yanw 20
yanw 2015-10-31 23:28:25 +08:00 ❤️ 1
@virusdefender 今晚花了不少时间“禁用”了这个“ SNI ”。

你可以通过 nginx -V 可以查看 SNI 是否禁用,如果 SNI 开启了,那就自己编译一个 Nginx (我用的是 Nginx , Apache 应该也是类似的)。编译 Nginx 的时候通过 –with-openssl 参数指定一个低版本的 OpenSSL 库( 0.9.8f 之前的 OpenSSL 库都不支持 SNI , 0.9.8f 支持,不过需要在参数中指定 enable-tlsext )。指定一个不支持 SNI 的 OpenSSL 库,编译出来的 Nginx 也就不支持 SNI 了。

我尝试过指定 no-tlsext 来编译 OpenSSL 失败了,不知道是原本就没有这个选项(网上看到有,也有可能在老版本支持),还是我操作的方式不对。*终还是采用了上面的方案。

还没研究是否有安全隐患。
virusdefender 21
virusdefender 2015-10-31 23:40:40 +08:00
@yanw 我搜索的结果也是这样,使用老版本的 openssl ,但是怕还有类似心脏出血的漏洞
yanw 22
yanw 2015-10-31 23:47:28 +08:00
@virusdefender 我看维基百科说 Heartbleed 影响的版本是 1.0.x (某几个版本),我私自认为 0.9.8 是安全的了。
yanw 23
yanw 2015-11-01 00:02:35 +08:00
@virusdefender 对了,请教一下你 80 端口怎么处理?重定向应该做不到吧?所以你的网站只能用 https 访问而不能用 http 访问咯?
typcn 24
typcn 2015-11-01 00:51:07 +08:00 via iPhone
@yanw
1. SNI 头并不是明文传送的,而是在生成 dh 对之后,加密传输的,证书并不是用来加密的,证书与加密没什么关系,证书只是健全
2.SNI 头是客户端发送给服务器的,你需要在所有客户端禁用 SNI

暴露域名的是证书而不是 SNI
yanw 25
yanw 2015-11-01 01:27:58 +08:00
@typcn 受教。 app 禁用 SNI 头可以理解,但浏览器应该控制不了吧。按你说的证书已经暴露域名,那么想隐藏域名完全不可能咯?只是阿里云暂时没管这种情况,可以这么理解吗?
typcn 26
typcn 2015-11-01 01:44:31 +08:00 via iPhone ❤️ 1
@yanw 没管也不好管,因为有各种泛域名,多域名之类的证书
virusdefender 27
virusdefender 2015-11-01 06:43:17 +08:00 via Android ❤️ 1
@yanw 是的 80 自己封掉了
kzzhr 28
kzzhr 2015-11-01 20:23:52 +08:00 via iPhone
两个必要条件: 1 未备案的域名 2 80 端口
waitfish 29
waitfish 2015-11-17 09:59:09 +08:00
我来说下吧,阿里云的策略就是分析所有 http 协议的包,只要是里面包含未备案的域名,就会拦截。
所以,结果就是甭管你是不是 80 、 8080 端口,就算你是( 8888 )端口的 http 服务,也会被拦截掉,而用 ip 地址访问就没关系。

服务器访问外网问题

现在有一台服务器,能够被外网访问到,但是它本身无法主动访问外网,请问有什么办法能让它主动访问外网。
举例说明:
在本台服务器上架了个 IIS , 80 端口的网站,网站能被正确访问到,但是直接访问 v2ex.com 就不可以打开,服务器为 windows ,能够远程上去。

访问 服务器 iis 主动7 条回复 • 2016-03-04 14:03:11 +08:00
function007 1
function007 2015-11-16 17:51:06 +08:00
是不是开了 ESC
glchaos 2
glchaos 2015-11-16 18:02:08 +08:00
@function007 能详细说下么,非常感谢
avastms 3
avastms 2015-11-16 18:06:45 +08:00
DNS 没配上吧老湿
RickyBoy 4
RickyBoy 2015-11-16 18:15:03 +08:00
服务器在什么网络环境下面的? 打不开提示什么错误?
shengyu 5
shengyu 2015-11-16 18:47:30 +08:00 via Android
查一查路由表,还有防火墙
glchaos 6
glchaos 2015-11-17 09:11:35 +08:00
@shengyu 防火墙全关,路由表是不是得看其他设备,这个我没有权限
@RickyBoy 服务器应该是在一个小局域网内,只有几台虚机组成的,至于错误 chrome 打开访问别的网站出现 ERR_CONNECTION_REFUSED
@avastms DNS 使用的是另外一台服务器,我没有权限更改
Zmiss520 7
Zmiss520 2016-03-04 14:03:11 +08:00
是不是哪里设置有问题

求推荐靠谱的云主机!

如前面所述,主机用于论坛使用,每月流量在 1500G 左右,日均 IP5000 ,阿里云或者腾讯云主机都好贵,大概要 3K 以上,目前预算 1K 左右,求推荐!
云主机 ip5000 推荐 日均22 条回复 • 2015-12-26 00:28:42 +08:00
pubby 1
pubby 2015-11-19 11:44:56 +08:00 ❤️ 1
静态资源都走 cdn
阿里云报价 http://help.aliyun.com/document_detail/cdn/billing/price.html

按流量计费的话每天 50G 0.36 * 60 = 18 元
有按流量计费和按峰值计费的,自己运行一天看看哪种便宜,可以切换的。
em70 2
em70 2015-11-19 12:02:26 +08:00 via Android ❤️ 1
这个量不算大啊, 1K 足够撑,哪要 3K ,静态资源放 OSS ,数据库放 RDS ,主机用个双核 4G5M 带宽的就行了
webjin 3
webjin 2015-11-19 12:31:41 +08:00 via Android
www.71idc.com
rhwood 4
rhwood 2015-11-19 12:45:30 +08:00
要省钱静态资源走 cdn 是必须的,按流量算 cdn 比 ecs 便宜很多。
ranzige 5
ranzige 2015-11-19 12:45:48 +08:00
@em70 这个量不算大啊, 1K 足够撑,哪要 3K ,静态资源放 OSS ,数据库放 RDS ,主机用个双核 4G5M 带宽的就行了

双核 4G 5M 带宽 383 一个月, OSS 1500G 流量 951 合计 1400 ?现在担心 5M 带宽不够,论坛的远程附件好像也是走 discuz 主机的
em70 6
em70 2015-11-19 13:05:47 +08:00 via Android
@ranzige 你可以买几个单核 512M5M 带宽机器做代理下载,一个一百多,内网流量是免费的。
ranzige 7
ranzige 2015-11-19 13:07:11 +08:00
@pubby 静态资源都走 cdn
阿里云报价 http://help.aliyun.com/document_detail/cdn/billing/price.html

按流量计费的话每天 50G 0.36 * 60 = 18 元
有按流量计费和按峰值计费的,自己运行一天看看哪种便宜,可以切换的。

论坛上的附件按会员级别下载的,不能直接缓存吧
kafka0102 8
kafka0102 2015-11-19 13:18:28 +08:00
5000 的 ip 怎么会那么高费用?静态文件使用 cdn ,腾讯云 1 个月也就 100 ,免费的有安全宝,效果也还可以。普通论坛使用阿里云就够了。
ranzige 9
ranzige 2015-11-19 13:31:39 +08:00
@kafka0102 论坛的附件,没有办法直接 CDN 吧
SharkIng 10
SharkIng 2015-11-19 15:09:54 +08:00 via Android
@ranzige 挂 cdn 和你附件权限可见没关系吧 如果我没理解错。指定用户组才能下载 也就是说只有指定用户才能看到连接。这个和以前那种回复可见一个意思。 但是附件放哪没关系啊。 你可以选择把附近放百度云盘 插件现成的 http://addon.discuz.com/?@bycall_bdy.plugin
molinxx 11
molinxx 2015-11-19 15:17:34 +08:00
既然考虑放在国内,那必然有备案,有备案就能用国内的 CDN ,为何还会有 1500GB 流量?日 IP5000 也不至于啊。
ranzige 12
ranzige 2015-11-19 15:59:49 +08:00
@molinxx 因为现在用的百度 CDN ,只加速了 CSS 、 JPG ,而论坛的主要功能是提供软件下载。这部分又不能加速。
ranzige 13
ranzige 2015-11-19 16:09:37 +08:00
可能是我对 CDN 加速只停留在百度加速的局限内。。
yunpeng2015 14
yunpeng2015 2015-11-19 16:16:19 +08:00
推荐使用“阿里云”主机吧, 现在机房位置除了内地,还有香港和美国可以选(不用备案)

我这有一个阿里云 9 折推荐码: IIO2HJ ,*次购买云服务器或云数据库可享受原价 9 折优惠,可多人使用

注:

选好产品->立即购买->确认订单环节->点击「我有推荐码」->输入推荐码->立享 9 折
murusu 15
murusu 2015-11-19 16:26:52 +08:00
@ranzige 软件的授权下载吗?这个 cdn 也是有解决方案,你去问问你的 cdn 服务商
ranzige 16
ranzige 2015-11-19 16:47:25 +08:00
@murusu 就是用户分享行业小工具、 excel 表、 PPT 、 PDF 方案等,需要有积分才能下载。不知道这个 CDN 怎样加速
murusu 17
murusu 2015-11-19 17:26:39 +08:00
@ranzige 东西还是放在 cdn 空间,不过用户访问那个文件前 cdn 会去你的服务器进行鉴权
raysmond 18
raysmond 2015-11-19 19:37:56 +08:00
hostus 几百块
Easonn 19
Easonn 2015-11-22 23:14:47 +08:00
想把网站做好做大还是要用独服?
IDC007 20
IDC007 2015-12-09 16:29:17 +08:00
直接用独立服务器了
abel162 21
abel162 2015-12-21 11:25:01 +08:00
香港的服务器需要吗?香港葵芳自建机房,测试 ip 43.249.28.1
thinkxen 22
thinkxen 2015-12-26 00:28:42 +08:00 via Android
预算 1k 是一年还是一个月?