精华内容
下载资源
问答
  • socket返回值为0的问题

    万次阅读 2020-04-15 14:50:13
    二、什么情况下socket返回值为0 1. 如果我们调用close(0)之后,socket_id = 0的便处于“空闲”状态。用户利用socket函数创建套接字时,便可能会将0分配给新创建的socket。 这种情况下,一般是套接字声明...

    一、问题描述

    socket_id为0,1,2的是给标准输入输出用的。当调用socket()来创建套接字时,返回值确实0,这时候如果进行读写,就是直接打印到控制台了。

    二、什么情况下socket返回值为0

    1. 如果我们调用close(0)之后,socket_id = 0的便处于“空闲”状态。用户利用socket函数创建套接字时,便可能会将0分配给新创建的socket。

    这种情况下,一般是套接字声明时没初始化,使用了默认值0。比如:

    //全局变量
    int fd;
    if (fd >= 0)
    {
        close(fd); //close(0)
    }
    

    所以一般套接字句柄要初始化为 -1

    //全局变量
    int fd = -1;
    if (fd >= 0)
    {
        close(fd); 
        fd = -1;
    }
    

    2. 编码时不注意运算符优先级关系导致
    比如下面的代码:

    while(g_pWanInfo->sockfd = networkConnect(SERVER_IP_DEFAULT, SERVER_PORTP_DEFAULT) < 0)
    {
    }
    

    小于号的优先级大于赋值,所以返回的句柄值会先和0进行比较,比较的结果为0,然后赋值给fd。这时候fd = 0

    改为下面的就OK了:

    while((g_pWanInfo->sockfd = networkConnect(SERVER_IP_DEFAULT, SERVER_PORTP_DEFAULT)) < 0)
    {
    }
    

    其实第二种情况是精简代码是要注意的问题。

    展开全文
  • 问题详情怎么解决sendmessage返回值为0呢???向一个外部程序的treeview句柄发送tvm_getcount,返回值是0。代码为:i:=sendmessage(Hwnd,tvm_getcount,0,0);showmessage(inttostr(i))这条代...

    你的位置:

    问答吧

    -> Delphi

    -> 问题详情

    怎么解决sendmessage返回值为0呢???

    向一个外部程序的treeview句柄发送tvm_getcount,返回值是0。

    代码为:i:=sendmessage(Hwnd,tvm_getcount,0,0);

    showmessage(inttostr(i))

    这条代码可以执行,在内部程序本身可以得到tvm_getcount的正确个数.

    但是,外部程序 返回值总是0。

    到底怎么解决呢???

    作者: godc2c

    发布时间: 2010-09-29

    外部程序?内部程序?

    你的i定义在内部程序?然后你在外部程序showmessage(inttostr(i)));

    是这样的吗?

    如果是我猜对这样,那么只能告诉你此i非彼i,而且你在外部程序中定义的i是个全局的变量吧?

    那当然是i:=0了。

    切确的还是需要你给点代码,那样比较好。

    作者: ecjtu5208

    发布时间: 2010-09-29

    不是这样啊,这两条语句都是在Form1中,而hwnd就是外部程序的树视图句柄。

    i:=sendmessage(Hwnd,tvm_getcount,0,0);

    showmessage(inttostr(i))

    作者: godc2c

    发布时间: 2010-09-29

    哦,获取另一个程序中的树视图中项目数。

    明白了。

    作者: ecjtu5208

    发布时间: 2010-09-29

    首先,那个外部程序需要运行,

    然后,你的内部程序找到那个句柄。

    这样就可以了。

    作者: ecjtu5208

    发布时间: 2010-09-29

    不行啊,外部程序不处理sendmessage发过去的消息

    作者: godc2c

    发布时间: 2010-09-29

    查找句柄的句子如下:

    Delphi(Pascal) code

    varmyhandle:hwnd;

    i:integer;beginmyhandle:=findwindow(nil,'xx');//xx是你那个外部程序窗口名称

    myhandle:=findwindowex(myhandle,0,'TTreeView',nil);//具体我就不解释参数了

    i:=sendmessage(myhandle,tvm_getcount,0,0);

    showmessage(inttostr(i))end;

    刚试的。可以获取。

    作者: ecjtu5208

    发布时间: 2010-09-29

    绝对可以,我可以保证。

    作者: ecjtu5208

    发布时间: 2010-09-29

    你知道 ExTreeCtrl 是什么类吗? 我用spy++查到控件的类名是ExTreeCtrl

    其实我也不知道是不是树视图,但是看样子判断是树视图,

    作者: godc2c

    发布时间: 2010-09-29

    不知道,猜一下,TExTreeCtrl

    作者: ecjtu5208

    发布时间: 2010-09-29

    代码已经给你了,自己慢慢倒腾吧。

    作者: ecjtu5208

    发布时间: 2010-09-29

    展开全文
  • 关于ibatis执行update返回值为0

    千次阅读 2018-07-20 16:02:25
    ibatis批量执行update时,返回值为0情况(第一次或偶发性为0,实际数据库修改成功)   三、解决方案 将getSqlMapClient替换为getSqlMapClientTemplate,即可解决   注:如无有不足之处或更好的办法,请多...

    一、系统 架构

    ibatis + oracle

    二、问题描述

    ibatis批量执行update时,返回值为0情况(第一次或偶发性为0,实际数据库修改成功)

     

    三、解决方案

    getSqlMapClient替换为getSqlMapClientTemplate,即可解决

     

    注:如无有不足之处或更好的办法,请多指教

    展开全文
  • socket返回值为0的问题排查

    千次阅读 2018-09-11 15:50:20
    socket返回值为0的问题排查 背景知识: LTE中,eNB和MME之间通过s1ap协议交流,而s1ap的底层协议为sctp。因此s1链路的建立,要依赖于sctp底层链路的建立。需要配置的sctp参数包括: 本地ip、本地端口号、远端ip、...

    socket返回值为0的问题排查

    背景知识:

    LTE中,eNB和MME之间通过s1ap协议交流,而s1ap的底层协议为sctp。因此s1链路的建立,要依赖于sctp底层链路的建立。需要配置的sctp参数包括:
    本地ip、本地端口号、远端ip、远端端口号、心跳间隔、最大路径重传次数、INIT最大重传次数、输入输出流个数等。

    而建立socket是sctp建立连接的先决条件,我们使用的时socket函数创建的套接字:

    int socket_id = int socket(int af, int type, int protocol);

    问题现象

    将配置发送给sctp链路管理模块,触发sctp的建立。但是日志显示,利用socket建立的socket_id为0。
    通过在网上查阅了一些文章,发现socket建立的时候,socket_id是0,1,2的基本属于标准输入输出套接字标识。通常用户自己创建的socket不会出现这个问题。

    问题原因

    socket_id为0,1,2的虽然是给标准输入输出用的,但是如果我们close(0)之后,该socket_id = 0的便处于“空闲”状态。用户利用socket函数创建套接字时,便会讲0分配给新创建的socket。

    经过查找close函数使用的地方,最终定位到了一处:
    1、该模块上下文初始化时,全被初始化为了0,该上下文结构体如下:

        typedef struct _wireshark_global_contxt_t
        {
            ....
            s32    udp_sock_id;
            ...
        } wireshark_global_context_t;

    2、该模块初始化时,会建立初始socket连接
    该模块建立socket连接时,只允许建立一个连接,因此为了防止存在多个连接的情况,在调用socket函数创建socket之前,加入了如下判断

        if (wiresahrk_gl_ctx.udp_sock_id >= 0)
        {
            close(wireshark_gl_ctx.udp_sock_id);
            wireshark_gl_ctx.udp_sock_id = INVALID_SOCKET; # INVALID_SOCKET = -1
        }

    于是就出现了close(0)的情况。

    问题解决

    1、上下文初始化时,将udp_sock_id初始化为非法值(-1)
    2、close() socket连接的时候,判断条件为>0的情况下close

    展开全文
  • msgget返回值为0

    2020-02-18 16:16:14
    其实msgget的返回值只要不是-1都是没有问题的,当之前没有人使用过msgget的时候返回的可能是0,但是这个0是合法的消息队列id,假如再次调用msgget的话就不是0了,而是另一个值。 ...
  • 今天在使用read函数读取文件内容时,发现读取到的内容为空,就查看了read函数的返回值,发现返回值为0,原来是忘记在写入文件之后使用lseek函数调整文件位置.....
  • 最近在写一个项目,用来拍照上传图片,刚开始已经成功拍照,并且成功上传,返回值一直是-1,突然某一天,拍照一直失败,返回值为0。百度了很多办法,都说路径出现了问题,但是项目有不好改路径。最终发现了一些小...
  • FindWindow 返回值为0

    2017-03-03 08:03:27
    ``` [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern IntPtr FindWindow(string strClass, string strWindow); IntPtr hh = FindWindow("Notepad", "");...
  • CString.GetLength返回值为0

    千次阅读 2011-07-19 17:28:08
    今天调试程序,CS太ring对象中明明有值CString.GetLength返回值为0,代码如下CString m_sername;CString s="hello " m_sername=s;此时s.GetLength()=0;经网上查找,找到原因在str1.ReleaseBu
  • Springboot是对Spring框架的扩展,它消除了Spring中繁杂的xml 配置而采用注解替代...但是如果对Controller中每个方法的返回值手动包装会非常麻烦,所以需要对接口的返回值进行包装。@RestController @Slf4j public ...
  • 程序“[9336] 20210325.exe”已退出,返回值为 0 (0x0)。 当程序出现这种情况时,无法按F5进行调试。 但是依旧可以Ctrl+F5直接执行。 那么如果想按F5让程序跑起来的时候,该如何操作呢? 可以调用一个库函数system ...
  • CString.GetLength返回值为0解决办法

    千次阅读 2014-07-17 18:24:15
    今天调试程序,CS太ring对象中明明有值CString.GetLength返回值为0,代码如下 CString m_sername; CString s="hello "  m_sername=s; 此时s.GetLength()=0; 经网上查找,找到原因在str1....
  • 1.scanf()函数有返回值int型。2.scanf()函数返回的值:正确按指定格式输入变量的个数,也即能正确接收到值的变量个数。例如:scanf("%d%d", &a, &b);如果a和b都被成功读入,那么scanf()的返回值就是...
  • CComboBox::GetItemData返回值为0  的文章,原文链接为: http://blog.sina.com.cn/s/blog_4b678e5b0100br0b.html 内容如下: vc使用起来果然很疯狂。 在使用该方法时,返回值一直为0;试了很多办法,都没有...
  • 最近在做一个div内容高度在不同浏览器下的高度自适应,发现document.body.clientHeight的返回值为0. 网上查了一下, 貌似有很多个解决方案。  1. 使用document.documentElement.clientHeight获取。  当使用...
  • 如何让返回值为0的数据而不返回其他数据? 如下图,查询时值为0,但返回结果却是所有的数据,包含值为1的。 ![查询时值为0](https://img-ask.csdn.net/upload/201705/02/1493713045_762027.png) ![返回值却是所有的...
  • open函数返回值为0

    万次阅读 2017-08-30 15:07:26
    If (fd <= 0) {     Printf(“open %s error!\n”, filename)     return;;   }    正是这样的判断,前不久导致了项目上面的一个问题,我们先来看看 open 函数的原型:  int   ...
  • mybatis delete返回值为0

    2015-08-21 12:12:20
    ![图片说明](https://img-ask.csdn.net/upload/201508/21/1440159123_715836.png)
  • 使用VS2010运行程序,黑屏一闪而过,说程序“[4176] char.exe: 本机”已退出,返回值为 0 (0x0) 解决方法是: 在引用头文件时,加上#include "stdlib.h " 在return 0前加上system(“pause”)。
  • 【求助】AttachThreadInput 返回值为0,GetLastError取得的错误码为5(访问拒绝),怎么解决啊AttachThreadInput,无法共享目标窗口的输入队列之前用这个函数一直好好的,直到碰到某一个产品窗口类名是大名鼎鼎的 ...
  • 哪个大佬看看我这个vs,是什么情况啊,难死我了,c-free能运行出来,怎么vs就不行了啊。
  • c语言中pow()返回值的类型 float 错误案例: int x; scanf("%d",&x); for(int i=0;i<=x;i++){ printf("pow(%d,%d) = %d\n",x,i,pow(x,i)); } return 0; 输出: pow(3,0) = 0 pow(3,1) = 0 pow(3,2) ...
  • MFC程序编写时,对话框中添加Rich ... 线程 'Win32 线程' (0x1c10) 已退出,返回值为 0 (0x0)。 线程 'Win32 线程' (0x8b8) 已退出,返回值为 0 (0x0)。 线程 'Win32 线程' (0x1de4) 已退出,返回值为 0 (0x0)。 Det
  • OpenGL ES glGenTextures返回值为0

    千次阅读 2017-07-30 20:06:53
    最近在Android的一个项目要用到OpenGL ES,自己对于图形引擎这块又不了解,顶多就是看过点DirectX,不过也是挺久以前的了...一步步调试看看发现是因为重新载入的过程中,生成纹理标识号的glGenTextures返回老是0,弄了
  • 没加return 0;程序还是正常运行? 我是在Visual C++6.0的环境下运行的程序,没加return 0;程序正常运行。 原因:在Visual C++6.0编译环境下,如果没有加return 0;...代码正确,返回值为任意值 代码错误&&am

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,843
精华内容 5,937
关键字:

返回值为0