嵌入式开发者社区

标题: TMS320C6657的“NDK_TCP”例程,不能使用send()函数发送数据 [打印本页]

作者: 992350020    时间: 2019-7-13 20:45
标题: TMS320C6657的“NDK_TCP”例程,不能使用send()函数发送数据
你好, 我使用“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()函数有特定的作用域吗? 我已经添加相应头文件了啊。


作者: 992350020    时间: 2019-7-15 10:40
哎,还是自己解决了。如果在别的线程里使用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.
作者: 广州创龙莫工    时间: 2019-7-17 13:40
感谢分享!
作者: shxsxlh    时间: 2021-6-24 16:54
感谢分享调试经验,最近正要用NDK TCP实现板卡作为服务器运行。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4