java socket 8192,【求助】DaemonNew 及回调函数相关问题

工程师好,我现在遇到一些问题,希望工程师能够帮助一下。

背景介绍:我使用 6678EVM 开发板平台上做NDK的相关实验,参考的例子的NSP中的HelloWorld,我在HelloWorld.c文件NetworkOen()函数中设置回调函数相关参数(采用TCP协议,端口号为6350,回调函数名为dtask_tcp_echo),见下图:

a516252fa58b8a022f7981e7718c9b83.png

且我设置的TCP发送缓冲区大小rc为8192字节,如下所示:

fd79862b435d35263f3732e94701df58.png

在udpHello.c里,dtask_tcp_echo( SOCKET s, UINT32 unused ) 函数主要实现向上位机发送数组数据,我采取的是中断触发方式,即设置每2ms向上位机发送一次数据(每组数据27字节),主要程序见下图:

aa54d4ddbcb31424ba5668d538c0b4e6.png

问题如下:

1. 当我执行程序时,程序可以向上位机发送数据,但是当发送的字节数超过8192(原来设置的rc大小)后,回调函数dtask_tcp_echo的send函数就不再执行了。

2. 之前工程师说”可能是发送太快,描述符来不及回收,有可能导致描述符资源耗尽,进而导致数据堵塞。“  我按照这个解答去更改了发送间隔为2s,但是问题依旧。请问是不是我设置的发送间隔时间是否合适呢?

3. 我后来使用UDP协议来进行发送和接收,则不出现超过rc的问题,能够持续发送数据,但是会出现约30S的数据延时。是否是因为UDP不存在发送缓冲区的问题呢?

4. 我去看了”TI Network Developer's Kit(NDK) v2.21 API Reference Guide.pdf“ ,其中5.4.1节介绍了DaemonNew函数,

对于TCP协议而言,当连接建立时,socket session 就打开了。这时是否还需要用fdOpensession()函数来分配描述符呢?

5.文档中DaemonNew()中介绍的这两句话如何理解呢?

对于TCP:

The callback function can keep the socket and task thread for as long as necessary. It returns from the callback once it is

done with the connection.

对于UDP:

The callback function can keep the socket and task thread for as long as necessary. It returns from the callback only when it is done with the data. (While the callback function holds the UDP socket, the daemon will ignore further activity on it.)

6.工程师能否提供一些测试现有TCP工程的思路呢?已经做了很长时间了,希望有所进展!

请工程师帮助解答一下,非常感谢!

happy dog

e17c80a251d722a4d8abf441b083e71d.png

我们应有恒心,尤其要有自信心。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值