TMS320C6657的“NDK_TCP”例程,不能使用send()函数发送数据 - TMS320C6655/57 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2665|回复: 3

[未解决] TMS320C6657的“NDK_TCP”例程,不能使用send()函数发送数据

[复制链接]

1

主题

2

帖子

47

积分

新手上路

Rank: 1

积分
47
发表于 2019-7-13 20:45:08 | 显示全部楼层 |阅读模式
你好, 我使用“NDK_TCP”例程将开发板作为主机,使用PC端的网络调试助手作为客户端数发数据。 在TcpTest()函数中,使用send()函数,可以正常的向PC发送数据,接收数据也正常。 但是我在另外的线程里调用send()函数就不可以发送数据了,函数的返回值为-1。
在另外的线程中我添加了相应的头文件,通过信号量对其进行调度,确保该线程可以运行。 定义了一个全局的套接字g_TcpSocket,并在TcpTest()函数中对进行赋值g_TcpSocket = s;  在TcpTest()函数中,使用send(
g_TcpSocket, Title,38,0),是可以向PC发送数据的。  而在我另外的线程中,同样使用wSendDataNum = send(
g_TcpSocket
, byDataBuff,16,0); 就不可以发送数据了,使用断点调试,发现wSendDataNum的值为-1。程序编译也没有相关的警告,这是什么问题呢?    (其中 unsigned char byDatabBuff[32] )
send()函数有特定的作用域吗? 我已经添加相应头文件了啊。

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有3人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

1

主题

2

帖子

47

积分

新手上路

Rank: 1

积分
47
 楼主| 发表于 2019-7-15 10:40:22 | 显示全部楼层
哎,还是自己解决了。如果在别的线程里使用send()函数,需要调用fdOpenSession(当前线程句柄) 和 fdCloseSession(当前线程句柄)。这两个函数应该是为send()函数授权一些资源使用的权限的。 详见NDK数据手册:The function returns the length of the data transmitted on successful completion. If a thread does not contain calls to fdOpenSession() and fdCloseSession(), the send() function returns a value of -1.
回复 支持 反对

使用道具 举报

3

主题

524

帖子

2073

积分

创龙

Rank: 8Rank: 8

积分
2073
发表于 2019-7-17 13:40:51 | 显示全部楼层
感谢分享!
回复

使用道具 举报

5

主题

16

帖子

1152

积分

金牌会员

Rank: 6Rank: 6

积分
1152
发表于 2021-6-24 16:54:00 | 显示全部楼层
感谢分享调试经验,最近正要用NDK TCP实现板卡作为服务器运行。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号  

GMT+8, 2021-9-22 19:23 , Processed in 0.069580 second(s), 40 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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