PC端做server,RA6M2做client,在TCP socket 确认连接后,单独使用recv函数或send函数都是正常的,但以下使用方法的话则不会发送数据出来,请问是什么问题?
if(FreeRTOS_connect(xSocket, &xServerAdd, sizeof(xServerAdd)) == 0)
{
xReturned = FreeRTOS_recv(xSocket, TCPRecvString, BUFFER_SIZES, 0); if(xReturned > 0)
FreeRTOS_send(xSocket, TCPRecvString, strlen(TCPRecvString), 0);
}
在这个函数框架下,最终表现是“不会发送数据出来”,能否看到出错环节是在FreeRTOS_recv阶段还是FreeRTOS_send阶段呢?
以下链接中包含 Example using FreeRTOS_send(),请参考其中的流程进行验证并更新结果,谢谢。
www.freertos.org/.../TCP_Networking_Tutorial_Sending_TCP_Data.html
FreeRTOS_send的问题,接收是可以进行,但是发送不了,只能重新创建套接字才可以正常
那这段描述“单独使用recv函数或send函数都是正常的”跟你所更新的还不一样,你可以试一下链接中的代码能否实现吗?
如果按照你的描述“发送不了,重新创建套接字才可以正常”的话,那重新创建的套接字和第一次接收时所用的套接字区别在哪里呢?
可能是我表述的不太准确,按上述函数框架, if(xReturned > 0)可以进入,证明接收函数是没有问题的,但是发送函数发送不出来。而单独使用recv函数或send函数是不关上述函数框架,如recv函数我是在接收到数据后使用串口打印数据出来是正常的。send函数是直接输出字符也可以。