- 浏览: 761763 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
connect连接时如果跨网段会造成超时,这样会阻塞当前,如果是带GUI的,则会卡住程序,
这样有2种解决方法:
1.用多线程,将连接放在线程中去处理,这样要等也没关系
2.但是实际上还可以设置非阻塞,然后select,这样也会卡,但是这个卡的时间可以自己去设定,那么卡2,3秒是可以满足目前的需求的
#define CONNECT_TIME_OUT 3
这里有一些别的解决方案和一些需要注意的
http://www.cnitblog.com/zouzheng/archive/2010/11/25/71711.html
这样有2种解决方法:
1.用多线程,将连接放在线程中去处理,这样要等也没关系
2.但是实际上还可以设置非阻塞,然后select,这样也会卡,但是这个卡的时间可以自己去设定,那么卡2,3秒是可以满足目前的需求的
#define CONNECT_TIME_OUT 3
timeval tm; fd_set set; unsigned long ul = 1; ioctl(m_sockfd, FIONBIO, &ul); //设置为非阻塞模式 int len = sizeof(int); bool ret = false; int error = -1; if( connect(m_sockfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { tm.tv_sec = CONNECT_TIME_OUT; tm.tv_usec = 0; FD_ZERO(&set); FD_SET(m_sockfd, &set); if( select(m_sockfd+1, NULL, &set, NULL, &tm) > 0) { getsockopt(m_sockfd, SOL_SOCKET, SO_ERROR, &error, (socklen_t *)&len); if(error == 0){ ret = true; }else{ ret = false; } }else { ret = false; } }else{ ret = true; } ul = 0; ioctl(m_sockfd, FIONBIO, &ul); //设置为阻塞模式 if(!ret) { tcp_close(); return -1; }
这里有一些别的解决方案和一些需要注意的
http://www.cnitblog.com/zouzheng/archive/2010/11/25/71711.html
发表评论
-
滑动窗口与拥塞控制
2017-09-29 14:47 759滑动窗口:用作流量控制: 1.发送端和接收端各维护一个独立的发 ... -
rawsocket发送tcp包
2017-09-25 11:52 983testTcp.h #ifndef TESTTCP_H ... -
柔性数组
2017-09-20 09:53 505#include <iostream> #i ... -
rawsocket发送dns包
2017-09-14 15:18 613#include <stdio.h> #in ... -
rawsocket发送icmp包
2017-09-06 09:54 658#include <stdio.h> #in ... -
netfilter
2016-10-04 20:31 474http://blog.chinaunix.net/uid-2 ... -
gdb的简单使用
2016-09-19 15:18 416注意编译的时间加上-g参数 1.调试运行 gdb a.out ... -
TCP各状态的意义
2016-03-01 14:06 420各个状态的意义如下: LISTEN - 侦听来自远方TCP端 ... -
log
2015-03-30 17:42 451log.h #ifndef __LOG_H__ #def ... -
TIMEWAIT与CLOSEWAIT
2015-03-17 11:32 659http://blog.csdn.net/kobejayand ... -
TcpClient
2015-01-16 17:46 470TcpClient.h #ifndef TCPCLIENT ... -
信号量
2014-09-26 10:20 681#include <semaphore.h> ... -
共享内存
2014-09-17 10:39 596SharedMemory.h #ifndef SHARED ... -
记录锁
2014-09-11 16:32 435#include <errno.h> #in ... -
popen
2014-09-06 14:50 639#include <stdio.h> #in ... -
大小端存储
2014-09-05 09:29 603#include <stdio.h> i ... -
条件变量(cond)
2014-09-01 11:02 873#include <pthread.h> # ... -
读写锁
2014-09-01 10:33 728#include <pthread.h> # ... -
trylock
2014-09-01 10:07 667#include <pthread.h> # ... -
线程分离
2014-09-01 10:00 693http://www.cnblogs.com/mydomain ...
相关推荐
在Windows环境下进行网络编程时,有时需要对socket连接进行超时控制,特别是在客户端与服务器通信的过程中,如果连接请求长时间没有响应,程序可能会陷入无休止的等待状态,从而导致资源浪费甚至程序卡死。...
在服务器运行过程中,如果一个请求耗时过长,可能导致服务器资源被过度占用,从而影响其他用户的正常访问。通过设定超时时间,可以在特定时间后结束无响应的请求,避免系统资源被长时间锁定,从而提高服务器的性能和...
提供一个c# socket连接池设计的例子,解决socket并发连接限制的问题,并且提供一种设置连接超时时间的方法,默认连接超时时间是不能设置的,提供了socket网络发送数据的接口.可用于pos小票打印机通讯。
因此,我们需要设定一个合理的超时值,确保连接尝试不会阻塞程序执行过长时间。 在C#中,`TcpClient`类本身并不直接提供连接超时的设置选项。为了实现连接超时,我们需要利用异步编程和`Socket`对象的特性。以下是...
然而,当目标服务器无法响应或响应速度过慢时,`connect`可能会导致长时间的阻塞,这在需要高效率扫描大量服务器端口的场景下尤为不便。本文将对Linux下`connect`超时处理进行总结,探讨如何实现非阻塞的`connect`...
第三步骤是用 select 在指定的超时时间内监听套接字的写就绪事件。如果 select 有监听到,证明连接成功,否则连接失败。 下面是 Linux 环境下的示例代码: ```c #include #include #include #include #include...
"cxf超时设置"这个主题是关于如何在使用CXF框架时,对网络通信的超时时间进行配置,以优化服务的稳定性和性能。 首先,理解超时的概念至关重要。在计算机网络中,超时是指等待某个操作完成的时间限制。当这个时间...
解决问题:delphi D10下(XE8\XE7),DataSnap连接超时设置在android中使用无效,导致不能连接服务器时长时间等待。补丁包带源码及说明。 Datasnap ConnectTimeout android
- **proxy_connect_timeout**:与上游服务器建立连接的超时时间。默认值为 60 秒。值得注意的是,这个超时时间不能超过 75 秒。这并非等待后端服务器返回页面的时间,而是指与上游服务器建立连接的时间。 - **proxy...
一个常见的方法是利用操作系统提供的套接字API,尤其是`setsockopt`函数,来设定套接字的超时时间。本篇文章将详细讲解如何在C++中实现这一功能。 `setsockopt`函数是一个用于设置套接字选项的系统调用,它允许我们...
例如,使用UPDATE STATISTICS语句可以更新要查询表的索引分发统计,保证估计时间的正确性: UPDATE STATISTICS 表名 另外,也可以使用sp_configure语句来设置查询超时: sp_configure 'show advanced options', 1...
例如,我们可以设置 ReadTimeout 和 ConnectTimeout 来控制客户端的超时时间。 ribbon: ReadTimeout: 2000 ConnectTimeout: 2000 这样,如果聚合层调用购物车服务超过两秒钟没有返回结果,客户端将超时报错。这...
反之,如果服务响应较慢或者网络不稳定,就需要设定较长的超时时间,以避免因网络问题导致的调用失败。 值得注意的是,超时时间设置为0表示永不超时,这在某些情况下可能是必要的,但在大多数生产环境中,为了防止...
本文主要介绍了如何在Linux环境下编写一个带有超时时间的`connect()`函数。代码示例中,首先创建了一个套接字`sockClient`,然后填充了服务器的`sockaddr_in`结构体`addrSrv`,包括IP地址和端口号。接着,通过`fcntl...
在上述描述中提到的"加了个连接时间限制",是指在`connect`调用中设置超时时间。这通常通过设置套接字选项`SO_SNDTIMEO`或`SO_RCVTIMEO`来实现。这样做是为了防止在扫描大量端口时因个别慢速响应的端口导致整个扫描...
轻松解决EasyConnect频繁掉线的问题,可以设置自动保持、取消保持灯功能,稳定在线,方便好用。
以服务A 调用 服务B为例:连接超时时间 (connect-timeout):是指服务A去请求服务B的网络连接时间。读取超时时间/请求处理超时时间(read-timeout):是指服务A连接上服务B后,服务B处理这个请求并做出响应的时间。