免费注册 查看新帖 |

Chinaunix

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

[C++] 在非 socket 上进行了 socket 操作? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-15 16:59 |只看该作者 |倒序浏览
我在linux下用C++编写一段socket程序,出现如上提示,请问各高手是什么原因?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-07-15 17:06 |只看该作者
贴代码。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2008-07-15 17:09 |只看该作者
我这里是好的呀!

论坛徽章:
0
4 [报告]
发表于 2008-07-15 17:11 |只看该作者
应该是那个fd不是socket的fd,但是你却调用类似send,accept之类的socket api操作.

论坛徽章:
0
5 [报告]
发表于 2008-07-15 17:11 |只看该作者
if( send(invoke_service_fd, "069",3,0) < 0 )  //就是这里调用出错
        {
                perror("send");
                exit(1);
        }                                                   
        status = 0;
//在类初始化时有调用如下 connect_server()函数。

socket连接代码如下:
        static int connect_server()
        {
                struct sockaddr_rc addr = { 0 };
               
                //strcpy(dest,svc_addr); //set target device addr
                char dest[18] = "00:1F:81:00:04:31"; /* server bt addr */
                char buf[1024];
                memset(buf,0,sizeof(buf));
                // allocate a socket
                fd = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
                if( fd < 0 )
                {
                        perror("socket");
                        return -1;
                }
       
                // set the connection parameters (who to connect to)
                addr.rc_family = AF_BLUETOOTH;
                addr.rc_channel = (uint8_t) 1;
                str2ba( dest, &addr.rc_bdaddr );
                printf("socket created\n");

                // connect to server, update status ( global status )
                status = connect(fd, (struct sockaddr *)&addr, sizeof(addr));
                printf("connect to server status %d\n",status);
                if(status != 0)
                {
                        perror("connect");
                        return -1;
                }
                else
                        return 0;
        }

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-07-15 17:14 |只看该作者
let me 猜猜 —— 在你没贴出来的那部分代码中,有个地方少了一对儿括号,仔细找找。

论坛徽章:
0
7 [报告]
发表于 2008-07-15 17:14 |只看该作者
原帖由 flw 于 2008-7-15 17:09 发表
我这里是好的呀!

能贴一下你的代码么?

论坛徽章:
0
8 [报告]
发表于 2008-07-15 17:17 |只看该作者
原帖由 converse 于 2008-7-15 17:11 发表
应该是那个fd不是socket的fd,但是你却调用类似send,accept之类的socket api操作.

fd 和 invoke_service_fd 都是全局变量。

论坛徽章:
0
9 [报告]
发表于 2008-07-15 17:18 |只看该作者
原帖由 flw 于 2008-7-15 17:14 发表
let me 猜猜 —— 在你没贴出来的那部分代码中,有个地方少了一对儿括号,仔细找找。

因为代码很多 所以 我把相关的贴出来了

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2008-07-15 17:21 |只看该作者
把 grep -r invoke_service_fd *.c 的结果发上来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP