在nodejs.org socket.setTimeout上,它说
当触发空闲超时时,套接字将收到"超时"事件,但不会切断连接.
但是当我测试这样的代码时:
var http = require('http');
server = http.createServer(function (request, response) {
request.socket.setTimeout(500);
request.socket.on('timeout', function () {
response.writeHead(200, {'content-type': 'text/html'});
response.end('hello world');
console.log('timeout');
});
});
server.listen(8080);
Run Code Online (Sandbox Code Playgroud)
套接字在超时后立即关闭,并且没有数据被回复到浏览器.这与文件完全不同.这是一个错误还是在http模块下有任何技巧处理套接字?
所以我正在编写一个针对玩家玩Reversi/Othello的程序.我写了一个方法来制作一个片段翻转的短动画 -
public void flip(int row, int col, Graphics window)
{
Color a;
if (pieces[row][col]==1)
a = Color.black;
else
a = Color.white;
for ( int size = 90; size>0; size-=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color( 0, 100, 0 ));
window.fillRect(row*100+3, col*100+3, 94, 94);
window.setColor(a);
window.fillOval(row*100 + 5, col*100+5+(90-size)/2, 90, size);
}
if (a==Color.black)
a=Color.white;
else
a=Color.black;
for ( int size = 0; size<90; size+=2)
{
try { Thread.sleep(11,1111); } catch (InterruptedException exc){}
window.setColor(new Color( 0, …Run Code Online (Sandbox Code Playgroud) 我制作了一个PHP脚本,可能需要大约3个小时才能完成.我从浏览器运行它,大约45分钟后它停止做任何事情.我知道这一点,因为它轮询某些网址,然后将一些数据保存到数据库.所以它基本上停止将任何数据放到数据库中,这导致我得出它已经停止的结论.它仍然在浏览器中显示它会加载页面,但它无休止.
没有任何错误,所以它可能是某种超时......但它发生的地方是神秘的,或者我怎么能防止它发生.在我的情况下,我无法使用CLI,我必须使用浏览器客户端来启动脚本.
我试过放
set_time_limit(0);
Run Code Online (Sandbox Code Playgroud)
但它没有明显的效果.什么可能导致超时和修复的建议?
为什么nokogiri在服务器繁忙时等待几秒钟(3-5)并且我逐个请求页面,但是当这些请求处于循环中时,nokogiri不会等待并抛出超时消息.我正在使用超时阻止包裹请求,但nokogiri根本不等待那个时间.有关此的任何建议程序?
# this is a method from the eng class
def get_page(url,page_type)
begin
timeout(10) do
# Get a Nokogiri::HTML::Document for the page we’re interested in...
@@doc = Nokogiri::HTML(open(url))
end
rescue Timeout::Error
puts "Time out connection request"
raise
end
end
# this is a snippet from the main app calling eng class
# receives a hash with urls and goes throgh asking one by one
def retrieve_in_loop(links)
(0..links.length).each do |idx|
url = links[idx]
puts "Visiting link #{idx} of #{links.length}"
puts "link: …Run Code Online (Sandbox Code Playgroud) 是否可以执行将执行HTTP请求的启动画面,如果此请求执行时间过长,即7-10秒,则中止请求并跳转到主活动?
下面的代码是我所做的,但它不起作用 - 超时不起作用,HTTP请求和跳转正在工作.据我所知,可以使用延迟AsyncTask的get()方法或处理程序.Get()方法应该在单独的线程中,但它不起作用.怎么做这个任务?
编辑:
public class SplashActivity extends Activity {
private static final String TAG = "SplashActivity";
private Handler handler = new Handler();
private Runnable r;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_layout);
if (Helpers.isNetworkConnected(getApplicationContext())) {
Log.d(TAG, "Has Internet");
final DownloadFAQ downloadFAQ = new DownloadFAQ();
new Thread(new Runnable() {
public void run() {
try {
Log.d(TAG, "Timing...");
downloadFAQ.execute().get(1000, TimeUnit.MILLISECONDS);
SplashActivity.this.runOnUiThread(new Runnable() {
public void run() {
Log.d(TAG, …Run Code Online (Sandbox Code Playgroud) 我正在使用net.Listen()来监听客户端的TCP连接.
当客户端建立连接时,Handler(conn net.Conn)将处理它.
func Handler(conn net.Conn) {
read_len, err := conn.Read(request)
if err != nil {
if neterr, ok := err.(net.Error); ok && neterr.Timeout() {
fmt.Println(neterr)
PILOG("Client timeout!", PILOGWARNING)
conn.Close()
return
}
}
Run Code Online (Sandbox Code Playgroud)
我使用测试客户端连接然后突然终止客户端而不发送DISCONNECT消息.我的服务器应该在达到超时时关闭连接,但经过漫长的等待时间后它永远不会发生.
我也尝试过,conn.SetReadDeadline(time.Now())但似乎仍然无法正常工作.所以我想知道默认的TCP超时是什么,以及如何设置它?
netstat -n杀死客户后我也用过并获得了以下结果:
tcp4 0 0 127.0.0.1.12345 127.0.0.1.57296 CLOSE_WAIT
什么CLOSE_WAIT意思?
我有一个.net 4.0 c#应用程序需要与mssql 2008的odbc连接.连接通常是完美的.但是当我运行一个通常运行几分钟的查询时(并且在项目的这一点上我不能优化查询运行时),我会在30秒后得到超时:
错误[HYT00] [Microsoft] [SQL Server Native Client 10.0]查询超时已过期
我已经尝试为odbc连接更改驱动程序(sqlsrv32.dll,sqlncli10.dll,sqlncli11.dll),但我总是遇到类似的错误.
这是我为模拟问题而构建的虚拟代码:
using (
OdbcConnection conn =
new OdbcConnection("DSN=d3FA;uid=sa;pwd=1234;MARS_Connection=yes;Connection Timeout=37;"))
{
conn.ConnectionTimeout = 37;
conn.Open();
OdbcCommand myCommand = new OdbcCommand("WAITFOR DELAY '00:00:45'", conn);
myCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我已在连接字符串中设置了连接超时,并且还设置了连接的属性.但似乎只是从查询执行中忽略了这些信息(37秒).超时仍然在30秒后发生.
从Microsoft我获得了Windows ODBC API提供SQLSetStmtAttr-Function的信息,该函数允许设置SQL_ATTR_QUERY_TIMEOUT属性.也许设置这个属性可以解决我的问题 - 但我找不到任何解决方案如何通过.net设置这个值.
结论:有人知道如何增加超时值吗?
我有一个Java servlet尝试连接到源(使用请求IP地址).
方法如下:
String ip = request.getRemoteAddr();
private void connect(String ip) throws SocketException, IOException {
Socket socket = new Socket();
socket.setSoTimeout(1000);
socket.connect(new InetSocketAddress(ip, Constant.PORT));
}
Run Code Online (Sandbox Code Playgroud)
现在,如果它没有连接一秒,它应该抛出异常,但它不会在一秒内抛出异常但需要一段时间,如10-15秒.
有人可以帮助为什么会这样吗?
我的瘦服务器在30秒后超时.我想覆盖这个ruby文件.
DEFAULT_TIMEOUT从30秒到120秒.怎么做?请告诉我.
代码在这里:https: //github.com/macournoyer/thin/blob/master/lib/thin/server.rb
我想覆盖没有"已经初始化的常量"警告.