查看: 9886|回复: 12

[MQX] MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

[复制链接]

该用户从未签到

8

主题

41

帖子

0

新手上路

Rank: 1

积分
11
最后登录
1970-1-1
发表于 2012-4-20 16:13:59 | 显示全部楼层 |阅读模式
我现在在K60 tower上测试MQX3.8,进行RTCS网络程序编写时,我的客户端进行connect时,程序一直阻塞着等待连接成功,我怎么能将其设置为非阻塞呢,谢谢!
我知道答案 目前已有11人回答
回复

使用道具 举报

该用户从未签到

131

主题

835

帖子

0

金牌会员

Rank: 6Rank: 6

积分
10021
最后登录
1970-1-1
发表于 2012-4-23 12:19:59 | 显示全部楼层

RE:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

等会儿,帮你联系一下版主
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

41

帖子

0

新手上路

Rank: 1

积分
11
最后登录
1970-1-1
 楼主| 发表于 2012-4-23 13:24:24 | 显示全部楼层

回复:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

谢谢管理员的关注!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-23 14:15:38 | 显示全部楼层

    RE:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    我对网络通讯也是懂一点点。初始化一下网络可以吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    41

    帖子

    0

    新手上路

    Rank: 1

    积分
    11
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-23 14:30:01 | 显示全部楼层

    回复:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    我现在不知道MQX下的RTCS在创建完网络套接字后,怎么将其设置为非阻塞方式?用RTCS_selectset或者RTCS_selectall好像不起作用。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    224

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    322
    最后登录
    1970-1-1
    发表于 2012-4-23 15:17:53 | 显示全部楼层

    RE:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    connect不可能一直阻塞的,有default timeout时间的,默认是8分钟,可以直接修改DEFAULT_CONNECT_TIMEOUT,或者用setsockopt设置。
    还是那句老话,代码都是全公开的,碰到问题多看看the fxxking code.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    41

    帖子

    0

    新手上路

    Rank: 1

    积分
    11
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-24 11:02:27 | 显示全部楼层

    回复:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    我在客户端建立连接时(connect)的超时时间设置不成功,我通过如下代码:
    opt_value=3000;
    ch_status = setsockopt(socket_fd,SOL_TCP,OPT_CONNECT_TIMEOUT,&opt_value,opt_length);
    if (ch_status != RTCS_OK)
    {
    printf("\nSUCCESS, setsockopt() OPT_CONNECT_TIMEOUT SUCCEED with error %lx", ch_status);
    }
    通过getsockopt 函数查看connect的超时时间也设置正确了,但调用connect函数时还是阻塞了非常长的时间(不是我设置的3000ms),我看了手册没有其他的说明了。
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    41

    帖子

    0

    新手上路

    Rank: 1

    积分
    11
    最后登录
    1970-1-1
     楼主| 发表于 2012-4-25 17:40:04 | 显示全部楼层

    回复:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    文档上说设置时间必须大于180000ms,所以即使我设置了3000ms,但还是会经过180000ms后超时的。但我就不明白RTCS怎么将connect就不能设置为非阻塞的,这样就不需要等待3分钟的超时了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    41

    帖子

    0

    新手上路

    Rank: 1

    积分
    149
    最后登录
    1970-1-1
    发表于 2012-5-10 16:44:12 | 显示全部楼层

    RE:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    尝试在TCPIP.C中
    void TCPIP_task
       (
          pointer  dummy,
          pointer  creator
       )
    { /* Body */
       TCPIP_CFG_STRUCT           TCPIP_cfg;
       RTCS_DATA_PTR              RTCS_data_ptr;
       uint_32                    i;
       TCPIP_MESSAGE_PTR          tcpip_msg;
       uint_32                    timeout = 1, timebefore, timeafter, timedelta;
       uint_32                    status;           /* Return status */
       _queue_id                  tcpip_qid;



    的timeout初始化为0试试。我没有调试,是否有用呢?自己尝试下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    41

    帖子

    0

    新手上路

    Rank: 1

    积分
    149
    最后登录
    1970-1-1
    发表于 2012-5-10 16:47:55 | 显示全部楼层

    RE:MQX上的RTCS客户端进行connect时怎么设置为非阻塞?

    我也遇到这个问题,可惜手头现在没有板子,如果找到答案,知会在下。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-26 12:20 , Processed in 0.120260 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表