- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 perl(希望它不会影响任何东西),但我需要知道如何为连接操作设置超时。问题是我不能永远等待连接操作的发生。如果它没有在几秒钟内发生,我宁愿放弃并继续前进。
socket(my $sock, PF_INET, SOCK_STREAM, (getprotobyname('tcp'))[2]);
setsockopt($sock, SOL_SOCKET, SO_SNDTIMEO, 10); # send timeout
print "connecting...\n";
connect($sock, sockaddr_in(80,scalar gethostbyname('lossy.host.com')));
print "connected...\n";
问题是,如果与“lossy.host.com”的连接“有损”或速度慢或速度不快,我宁愿放弃也不愿让用户等待。 (将其视为执行其他操作的程序的副作用......用户可能不希望此脚本与某处的服务器通信......)。
线程案例:如何中断 connect()?你会不会只是分离线程而忘记它?
最佳答案
您可以使用fcntl
将套接字设置为非阻塞,然后select
超时等待它变得可读。如果它在超时之前无法读取,您可以在此时关闭它。
我知道如何在 C 中执行此操作,但不知道如何在 perl 中执行此操作,否则我会给您举个例子。 perlfunc 联机帮助页说所有这些函数都存在,粗略阅读似乎说它们会按您想要的方式工作。
编辑:抱歉,错过了 perlfunc 说它们可能在非 Unix 系统上不可用的部分,事实上,fcntl
在 win32 上不可用。不过,您可以使用一个 IO::Socket 库,它将在 Windows 上做正确的事情。
这是适合我的示例代码(无论如何在 Linux 上):
#!/usr/bin/perl
use IO::Socket::INET;
use IO::Select;
$sock = IO::Socket::INET->new('PeerAddr' => 'lossy.host.com',
'PeerPort' => 80,
'Blocking' => 0 );
$sel = IO::Select->new( $sock );
@writes = $sel->can_write(10);
if ( $sock->connected ) {
print "socket is connected\n";
} else {
print "socket not connected after however long\n";
$sock->close;
}
关于tcp 连接超时(unix/windows 便携),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043920/
很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center . 10年前关
我想做的是使 sbt 可移植,至少可以在不同的 Windows 机器之间移植,这样我的 sbt 插件、设置、ivy repo 等就不必在每台计算机上重新设置。 我的方法是把 sbt.bat , sbt
我似乎看到很多答案有人建议使用 生成随机数,通常伴随着这样的代码: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_d
我正在使用 perl(希望它不会影响任何东西),但我需要知道如何为连接操作设置超时。问题是我不能永远等待连接操作的发生。如果它没有在几秒钟内发生,我宁愿放弃并继续前进。 socket(my $sock
是否有一种简单、可移植的方式(至少是 win32,linux)将 UTF-16 转换为 UTF-8 并返回?最好使用 boost。 谢谢你的帮助,托拜厄斯 最佳答案 两者都是libiconv和 icu
我将飞往澳大利亚(飞行约 15 小时),我想在飞机上继续我当前的项目。 我的项目(CakePHP 框架上的网站)需要一个 LAMP 包,所以我正在寻找一种非常便携、价格合理的设备,可以安装 LAMP,
我想在我们的编程课上在我们学校的计算机(在 Windows 下)上运行 python3。我在家里(使用 Windows)将 python 3.1 安装到 USB 闪存驱动器上,并将其带到学校。但是,它
出于教学目的,我正在寻找适用于 Mac、Windows 和可能的 Linux 的独立 PHP 二进制文件。 计划将二进制文件作为单个文件分发给学生,用于测试 PHP 脚本,而无需安装完整的 Web 服
关于好的 Git GUI 的任何建议。理想情况下应具有以下特征: 没有太多限制,即可以支持相对复杂的功能,例如 rebase ,没有-ff 以“学习模式”显示正在执行的 Git 命令,尤其是具有很多选
我是一名优秀的程序员,十分优秀!