社区
工具平台和程序库
帖子详情
connect ※ accept 问题!高手进
sharkhuang
2003-11-25 10:56:08
大家都知道accept是block的。我想知道这个2个函数能设置超时值吗?
各种平台都需要!我要封装其为跨平台的。
come on!
...全文
204
6
打赏
收藏
connect ※ accept 问题!高手进
大家都知道accept是block的。我想知道这个2个函数能设置超时值吗? 各种平台都需要!我要封装其为跨平台的。 come on!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sharkhuang
2003-11-26
打赏
举报
回复
是这样的!服务器端:listen后可以select
客户端:、利用ioctl讲socket设置成非阻塞。
然后select
利用ioctl将socket的设置改回来。
xianjing
2003-11-26
打赏
举报
回复
楼上的time_wait有一定的借鉴,但是没有完全解决作者的意图。
是不是应该是如下步骤:
1、利用ioctl讲socket设置成非阻塞。
2、connect&accept调用。
3、利用select进行选择。
4、利用ioctl将socket的设置改回来。
step_by_step
2003-11-25
打赏
举报
回复
//给你个我写的例子
int TimeWait(int fd, int Mode)
{
fd_set rset;
bool flag = true;
struct timeval timewait;
FD_ZERO(&rset);
FD_SET(fd, &rset);
timewait.tv_sec = SOCK_TIME_OUT;
timewait.tv_usec = 0;
while(flag)
{
if(MODE_WRITE == Mode)
{
if(select(fd+1, NULL, &rset, NULL, &timewait) <= 0)
{
if (errno == EINTR)
{
continue;
}
else
{
return -1;
}
}
}
else if(MODE_READ == Mode)
{
if(select(fd+1, &rset, NULL, NULL, &timewait) <= 0)
{
if (errno == EINTR)
{
continue;
}
else
{
return -1;
}
}
}
else
{
return -1;
}
flag = false;
}
if(!FD_ISSET(fd, &rset))
{
return -1;
}
return 1;
}
step_by_step
2003-11-25
打赏
举报
回复
你可以用select这个函数来为accept实现超时
fierygnu
2003-11-25
打赏
举报
回复
用个定时器信号中断该系统调用。
xujunfeng008
2003-11-25
打赏
举报
回复
可用多线程实现...
connect
和
accept
区别
connect
和
accept
都用于完成套接字的连接,不同的是,其中connet 用于申请建立连 接,无连接的套接字
进
程也可以调用connet,但这时在
进
程之间没有实际的报文交换,调 用将从本地操作系统直接返回。这样做的优点是程序员不必为每一数据指定目的地址,而且, 如果收到一个数据报,其目的端口未与任何套接字建立“连接”,便能判断该端口不可操作。
accept
函数用于使服务器等待来自
腾讯面试题
connect
和
accept
发生在三次握手的哪个阶段
客户端调用
connect
的时候,就是发一个syn 服务端
accept
的时候,实际上是从内核的
accept
队列里面取一个连接,如果这个队列为空,则
进
程阻塞(阻塞模式下)。如果
accept
返回则说明成功取到一个连接,返回到应用层。 大致的过程是客户端发一个syn之后,服务端将这个连接放入到backlog队列,在收到客户端的ack之后将这个请求移到
accept
队列。 所以
accept
一定是发生在三次握手之后,
connect
只是发一个syn而已 额,
Accept
根本不参与三次握手,服务器只要Liste.
ERROR: Can not
connect
to monitor daemon!的
问题
使用yum install mysql-mmm安装的。 mmm软件安装完了,配置都写好了,但是执行/usr/sbin/mmm_control show报错如下: ERROR: Can not
connect
to monitor daemon! 1,检查db1和db2上面的agent,都是开启的。 2,检查iptables,也都是好的,没有过滤。 3,去看mmm的日志报告,报连接127.0.0.1...
npm下载报错npm ERR! code ETIMEDOUT npm ERR! syscall
connect
npm ERR! errno ETIMEDOUT npm ERR! network re
npm ERR! code ETIMEDOUT npm ERR! syscall
connect
npm ERR! errno ETIMEDOUT npm ERR! network request to https://registry.npmjs.org/cnpm failed, reason:
connect
ETIMEDOUT 104.16.17.35:443 npm ERR! network This is a problem related to network
connect
ivity. npm
mysql_real_
connect
连接失败
问题
!
mysql 的c函数mysql_real_
connect
, 用localhost为参数
进
行连接,第一次会成功,但第二次就会抛出异常。本人遇到这个
问题
,查找了好久,最后才发现
问题
所在! 解决办法:改用ip地址就可以! 经验共享!
工具平台和程序库
24,854
社区成员
27,343
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章