我准备小申请.当我重新启动iPhone 3G(使用3G互联网连接)并安装此应用程序时,getaddrinfo始终返回EAI_NONAME(8).我关闭应用程序并运行Safari然后运行我的应用程序 - 所有工作.什么问题?
- (void)viewDidLoad {
[super viewDidLoad];
const char* hostname = "google.com";
struct addrinfo hints, *res;
int retval;
memset (&hints, 0, sizeof (struct addrinfo));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
retval = getaddrinfo (hostname, NULL, &hints, &res);
if (retval == 0) {
freeaddrinfo (res);
}else if(retval == EAI_NONAME)
{
//noname
}
}
Run Code Online (Sandbox Code Playgroud)
来自Apple的回答:
你好帕维尔,
我正在回应你的发现,尝试使用BSD getaddrinfo功能在尝试获得只能进行无线广域网(WWAN)连接的连接(EDGE,3G)时会出现问题.您遇到的问题是,出于节省电池的原因,WWAN将在不需要网络服务时关闭.接下来的问题是,当需要网络服务时,如何激活WWAN.
官方支持的建立WWAN连接的机制是使用CFSocketStream API(或依赖API - NSSocket,以及CFHTTPStream,CFFTPStream,NSURLRequest和NSURLConnection API).这意味着正式,只支持TCP.此限制会影响所有基于UDP和BSD套接字的应用程序.使用BSD Connect呼叫不会触发iPhone启用WWAN.该限制也适用于在WiFi连接下将导致分组传输的所有其他BSD功能.
但是,在当前的iPhone OS下,一旦建立了WWAN连接,使用BSD套接字和CFSocket功能将使WWAN连接保持活动状态.这使得基于UDP或BSD套接字的应用程序可以通过使用CFSocketStream API与TCP服务器(包括HTTP Web服务器)建立连接来建立WWAN连接.一旦连接处于活动状态,程序就可以像过去一样运行.这就是访问网络服务的Safari,Mail和其他Apple应用程序用于建立连接的方式.因此,当您启动Safari时,启动您的应用程序网络访问工作.使用Safari会导致iPhone建立WWAN连接.当您退出Safari时,WWAN不会自动关闭 - 它会在短时间内保持活动状态.如果启动应用程序,则WWAN服务处于活动状态,只要存在网络活动,您的应用程序将使WWAN保持活动状态.
如果您的应用程序要使用TCP,那么您可以修改代码以使用CFSocketStream或依赖API进行网络连接.当然,如果你有一个完整的BSD套接字功能库,对于想要尽快将应用程序推送到App Store的人来说,这可能不是一个合理的解决方案.
....
我正在尝试创建一个接受以下值的正则表达式:
我找到了([0-9]){0,2}\.([0-9]){0,2}对我说"数字0到9出现0到2次,然后是'.' 字符(应该是可选的),后面跟着数字0到9,出现0到2次.如果只输入2位数,则为'.' 没有必要.这个正则表达式有什么问题?
Delphi有很多VCL可以构建报告,所以我想要一些关于哪一个要检查的反馈.
它只是构建几页,即.一个microIVS应用程序,所以我不需要企业级解决方案.我不指望任何开源工具,但如果那里有一个好的工具......
我知道以下内容:
Rave Reports,随Delphi 2007一起提供
QuickReports(我读过它以前用Delphi发布,但已被Rave Reports取代)
FastReports
报告生成器
水晶报告
谢谢.
我需要在我的网络中获取主机的MAC ID.为此,如果我ping到该IP并查询ARP缓存arp -a,我就能获得MAC ID.我只是想知道我是否可以获取任何API来查询ARP并获取MAC ID.
此外,如果有更好的方法从IP地址获取MAC ID,请建议.
PS:我在JAVA工作.
谢谢.
我正在使用客户端Silverlight的.NET应用程序.现在我已经到了我想在服务器端抛出静态虚拟数据并添加数据库的地步.
对于数据库,我很乐意使用其中一个ORM,我可以简单地标记我的模型类,并为我构建数据库表.我之前用Groovy和Grails做了一些测试,并且认为GORM做得很顺利.在.Net中设置数据库的最佳方法是什么?
让我印象深刻的第一件事就是使用nHibernate.我对nHibernate一无所知,但我听到很多人热情地提到它.但后来我发现ADO .Net也是一个内置于框架中的ORM .. nHibernate是否超越了ADO?和LINQ有什么关系?我看到它也被列为ORM,但我认为LINQ更适用于查询部分?我可以通过LINQ"定义"数据库吗?
欢迎提出任何意见和建议.如果您对要使用的数据库有什么意见,我也很想听听.我假设MS SQL Server是最简单的选择?
在类似LISP的语言中,所有语言结构都是一等公民.
请考虑Dylan中的以下示例:
let x = if (c)
foo();
else
bar();
end;
Run Code Online (Sandbox Code Playgroud)
在LISP中:
(setf x (if c (foo) (bar)))
Run Code Online (Sandbox Code Playgroud)
在Python中你必须写:
if c:
x = foo();
else:
x = bar();
Run Code Online (Sandbox Code Playgroud)
因为Python会使语句和表达式失效.
所有语言结构都可以使用符合off-side规则的语言(具有基于inningtion的语法)作为表达式,以便您可以将它们分配给变量或将它们作为参数传递?
我有一个小脚本,它从DB读取数据,对它们进行排列并将它们保存为.txt文件.最后,用户被重定向到该文件.现在,如何在用户重定向时出现.txt文件下载框?
<?php
// Preden zacnemo, dobi novico iz baze!
$MOD_NEWS_SAVETXT_getnews = mysql_query("SELECT * FROM NEWS WHERE NEWSid = '{$_GET['id']}'") or die(mysql_error());
// Nardimo while in priredimo vsebino iz baze spremenljivkam!
while ($MOD_NEWS_SAVETXT_NEWSRESULT = mysql_fetch_array($MOD_NEWS_SAVETXT_getnews)) {
$MOD_NEWS_SAVETXT_FILE_name = $MOD_NEWS_SAVETXT_NEWSRESULT['NEWStitle'] . ".txt";
echo $MOD_NEWS_SAVETXT_FILE_name;
$MOD_NEWS_SAVETXT_FILE_handle = fopen($MOD_NEWS_SAVETXT_FILE_name, 'w') or die("Ne morem brati/ustvariti datoteke!");
fwrite($MOD_NEWS_SAVETXT_FILE_handle, $MOD_NEWS_SAVETXT_NEWSRESULT['NEWStext']);
fclose($MOD_NEWS_SAVETXT_FILE_handle);
header("Location: ./" . $MOD_NEWS_SAVETXT_FILE_name ."");
}
?>
Run Code Online (Sandbox Code Playgroud) 有没有人知道一个工具或VS加载项,它将允许我采用基类和派生类,并将它们折叠成一个"扁平"类?或者这是一项操作太难,因为需要解决重写和隐藏/新成员的问题?
背景:我正在开发一个项目,我们有一个基类和一个派生类,它将成为其他几个中的第一个.
随后的分析工作意味着现在没有必要使用另一个类,并且专业化只会让代码库新来的编码人员感到困惑.我想合并基类和派生类来简化事情(并简化nHibernate中的数据库映射),但两者都非常大 - 所以我认为值得检查一个工具是否可以完成这项工作.
我有一个XML文档,我正在使用它 lxml.etree.tostring
print etree.tostring(doc, pretty_print=True)
Run Code Online (Sandbox Code Playgroud)
默认的缩进级别是2个空格,我想将其更改为4个空格.在函数中没有任何争论tostring; 有没有办法用lxml轻松完成这项工作?
我正在尝试确定一个良好的发布管理系统,并结合使用版本号标记的标记实践 - 例如,1.0.该标记之后的任何更改都会增加,如1.0-1,1.0-2等.
但是,如果我从master for 1.0版本创建一个新分支,然后切换到该分支并将其标记为1.0,则上述系统工作正常.该分支上的其他错误修复按预期显示,1.0-1,1.0-2
但是,除非我在制作1.0分支后第一次提交后重新标记主服务器,否则对主服务器的任何工作也将显示相同的增量:1.0-1,1.0-2
当然,sha1哈希将是唯一的,但我最终会从master和branch获得相同的修订/增量.
当我只标记分支时,有没有办法避免master被标记?有没有更好的方法呢?现在,我在创建分支1.0之后的唯一选择是在master上进行一次小的提交,然后为1.1-dev或其他东西重新标记它.
然后重复每个版本.
但是,如果再对一个分支进行标记,比如1.0.1版本,那么它似乎也会标记master,因为那是先发生的事情?
python ×2
.net ×1
c# ×1
class ×1
database ×1
delphi ×1
expression ×1
file ×1
git ×1
if-statement ×1
indentation ×1
iphone ×1
java ×1
linq ×1
lisp ×1
lxml ×1
networking ×1
nhibernate ×1
objective-c ×1
orm ×1
php ×1
pretty-print ×1
regex ×1
reporting ×1
sockets ×1