免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1983 | 回复: 3
打印 上一主题 下一主题

[SCO UNIX] 求救(关于SCO 5.0.7) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-02 17:42 |只看该作者 |倒序浏览
我在SCO OpenServer 5.0.5和5.0.6上编译通过可以正常执行的程序在5.0.7上不能执行,是一个服务端监听的程序,错误出现在下面的代码上

    rstLclAddr.sin_family = AF_INET;/* "Internet" Address Family */
//    rstLclAddr.sin_addr.s_addr = inet_addr(ClientCt.HostAddr );/* Local IP address */
        rstLclAddr.sin_addr.s_addr = INADDR_ANY;
    rstLclAddr.sin_port = htons(ClientCt.ClientPort);/* Set to "Echo" Port*/
    if (bind (sockfd, (struct sockaddr*)&rstLclAddr, wAddrLen) < 0)
    {
                errnum = errno;
                sprintf(strSysErrMsg,"AcptClnt: Socket Bind error! IP:%s,Port:%d. errno=%d,errMsg:%s.",ClientCt.HostAddr,ClientCt.ClientPort,errno,strerror(errnum));
                fprintf(stderr,"\r%s\n",strSysErrMsg);
                WriteSysLog(strSysErrMsg);
                exit(1);
    }

    if((listen (sockfd, 100)) < 0)
    {
                errnum = errno;
                sprintf(strSysErrMsg,"AcptClnt: Socket Listen error! errno=%d, errMsg:%s.",errno,strerror(errnum));
                fprintf(stderr,"\r%s\n",strSysErrMsg);
                WriteSysLog(strSysErrMsg);
                exit(1);
    }

        fprintf(stderr,"\rAcptClnt Progress: Start Success!\n";
        WriteSysLog("AcptClnt Progress: Start Success!";
    /*******Init Netware ******/
        for(;
        {
                memset(RecvRecMessage,0,MSGLEN);
                memset(SendRecMessage,0,MSGLEN);
                /********Accept Netware *************/
                accsockfd=accept(sockfd,(struct sockaddr*) &tcp_addr,&clilen);       
                if(accsockfd<0)
                {
                        errnum = errno;
                        sprintf(strSysErrMsg,"AcptClnt: Socket Accept failed! errno=%d, errMsg:%s.",errno,strerror(errnum));
                        fprintf(stderr,"\r%s\n",strSysErrMsg);
                        WriteSysLog(strSysErrMsg);
                        continue;
                }

程序在accpet这个函数时报错,错误代码为14,描述为Bad Adderss
请问各位老大是什么原因啊
另外在507上编译的程序到506上运行时会报错error opening /usr/lib/libm.so.1,而且在506上确实没有这个文件
难道两个版本有这个大的区别

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-04-02 18:02 |只看该作者
507是有差别的,动态库不同了,使用动态库的程序都应该重新编译。
rstLclAddr设置参数之前应该bzero清零,
rstLclAddr和tcp_addr应该定义为struct sockaddr_in,wAddrLen应该等于struct sockaddr_in的size,
ClientCt.ClientPort的值也应该检查一下
唉,求人不如求己,你自己man一下去看看这些函数的联机帮助吧

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2007-04-02 18:08 |只看该作者
另外,请使用 code ,把那些小脑袋去掉,这样便于大家给你看看程序.

论坛徽章:
0
4 [报告]
发表于 2007-04-02 18:13 |只看该作者
谢谢楼主,我试一试!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP