我需要能够发送一个UDP消息,还收到一个以发现从iPhone网络上的SSDP设备.
我知道我需要将数据包发送到多播地址,我的HTTP请求需要看起来像这样:
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: ssdp:discover
Mx: 3
ST: "urn:schemas-upnp-org:device:InternetGatewayDevice:1"
Run Code Online (Sandbox Code Playgroud)
从阅读的文档,似乎我能做到这一切与CFNetwork的,尽管阅读(并重新读取文档)我奋力上手.任何人都可以推荐和教程或代码片段让我超过最初的学习驼峰吗?
我有CFNetwork编程指南:
http://developer.apple.com/mac/library/documentation/Networking/Conceptual/CFNetwork/CFNetwork.pdf
和Beej的网络编程指南使用互联网套接字:
谢谢
戴夫
PS
在这种情况下,我无法使用任何第三方库和框架.
我一直在寻找两者之间的差异(通常用于使用HTTP/HTTPS的简单请求),但我找不到任何东西.有什么区别吗?我问它,因为当我需要,我只是使用NSURLConnection的,我已经看到了很多人建议使用AFNetworking(基于CFNetwork的).
问候!
对于IOS 9及更低版本,此方法CFReadStreamCreateForHTTPRequest(...)已弃用.
Apple的文档建议使用NSURLSession而不是这个.但是我不明白我如何重新整合与NSURLSession的Live(我使用流)一起工作的功能.
我没有看到任何由NSURLSession加载"live"的可能性.
您通过服务器的特殊URL来加载实时数据的用途是什么?
我正在使用CFStream/NSStream来建立http连接.我希望能够在三种情况下检测到SSL握手失败:
今天没有对我的CFStream的SSL属性进行测试,我得到:
有没有办法配置CFStream来正确区分这三种情况?或者在SSL握手期间进行一些回调?
谢谢你的帮助.
当应用程序处于后台时,我在使用NSURLSession UploadTask上传视频文件时遇到CFNetwork SSL握手错误.当应用程序处于前台时,上传视频没有问题.只有在应用程序处于后台时才会出现问题.
我使用域名创建了一个请求,例如http://www.google.com.但是,我怎样才能获得框架用于连接服务器的确切IP地址?
我知道gethostbyname方法或nslookup方法可以给我们地址,但由于ip地址是动态分配的,也许我请求的ip地址与返回的这些方法的时间不同.
那么有没有办法让我获得真正的请求IP地址?(我想以编程方式获取ip,而不是使用tcpdump等)
我是新手(ish)iOS开发人员第一次使用Alamofire为iOS 9.3应用程序发出多个GET请求:
var i = 0
while i < 100{
var url = String("https://itunes.apple.com/search?term=" + "somequery")
Alamofire.request(.GET, url).responseJSON {[weak self] response in
switch response.result {
case .Success:
break
case .Failure(let error):
print(error)
}
}
i++
}
Run Code Online (Sandbox Code Playgroud)
每个请求都会增加应用程序的内存使用量,然后永远不会释放它.我已经使用Instruments来试图更好地了解正在发生的事情,看起来这是与CFNetwork有关的问题.
我试图解决这个问题的事情:
为什么会发生这种情况,如何在请求完成后释放内存?
我在 AWS 控制台中注意到,我们的网站收到的请求比平时多得多。特别是在夜间(欧洲时间)。
然后我检查了 nginx 日志,现在我知道许多具有不同 IP 地址的设备请求网站的根目录,其中大多数使用用户代理swcd (unknown version) CFNetwork/978.0.7 Darwin/18.7.0。有时其中一个版本不同。
我完全不知道发生了什么,所以我希望有人可以提供帮助。
编译我的项目时出现错误: SYmbol not found to _SCDynamicStoreCopyProxies 有什么想法吗?
在查看此链接API模式错误后,我使用STTwitter更正了一些代码.这消除了一个错误,但让我注意到一个新的CFNetwork错误.每当我尝试使用getHomeTimelineSinceID或getUserTimelinewithScreenName获取状态时,调试器中会弹出错误"CFNetwork内部错误(0xc01a:/SourceCache/CFNetwork/CFNetwork-695.1.5/Foundation/NSURLRequest.mm:798)".调试后,我发现错误在[r Asynchronous]之后弹出(STTwitterAppOnly.m的第272行).我通过进入verifyCredentialsWithSuccessBlock来到达这个位置.
我目前使用的代码:
[twitter verifyCredentialsWithSuccessBlock:^(NSString *bearerToken) {
[twitter getHomeTimelineSinceID:nil
count:20
successBlock:^(NSArray *statuses) {
NSLog(@"-- statuses: %@", statuses);
self.twitterFeed = statuses;
[self.tableView reloadData];
} errorBlock:^(NSError *error) {
}];
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
[twitter getUserTimelineWithScreenName:@"Dandelion_2014"
successBlock:^(NSArray *statuses) {
self.twitterFeed = [NSMutableArray arrayWithArray:statuses];
[self.tableView reloadData];
} errorBlock:^(NSError *error) {
NSLog(@"%@", error.debugDescription);
}];
Run Code Online (Sandbox Code Playgroud)
我不确定是什么导致了这个错误,有人有洞察力吗?
cfnetwork ×10
ios ×6
swift ×2
afnetworking ×1
alamofire ×1
background ×1
cfnetworking ×1
cfstream ×1
darwin ×1
gcc ×1
http ×1
iphone ×1
macos ×1
memory-leaks ×1
networking ×1
nsstream ×1
nsurlsession ×1
oauth ×1
objective-c ×1
ssdp ×1
ssl ×1
sttwitter ×1
twitter ×1
udp ×1
upnp ×1