This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SIMPLELINK-WIFI-CC3120-SDK-PLUGIN:如何使 cc3120boost 支持 IPv6套接字连接?

Guru**** 2562120 points
Other Parts Discussed in Thread: CC3120BOOST, MSP-EXP432E401Y, CC3120

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/920015/simplelink-wifi-cc3120-sdk-plugin-how-to-make-cc3120boost-support-ipv6-socket-connect

器件型号:SIMPLELINK-WIFI-CC3120-SDK-PLUGIN
主题中讨论的其他器件:CC3120BOOSTMSP-EXP432E401YCC3120

大家好。

我有一套 MSP-EXP432E401Y+CC3120BOOST、 我在  swas034文档中找到了特性"IPv4和 IPv6 TCP/IP 堆栈"。  但是、在实际开发中、发现无法连接到 IPv6地址。  我最终在 SDK 源代码中找到了以下代码注释。 我按照顺序 是`SlNetSock_connect --> SlNetIfWifi_connect --> sl_Connect`。

 

使用最新的 SDK 版本 simplelink_sdk_wify_plugin_2_40_00_22、他们可以从 DHCPv6服务获取 IPv6全局地址、他们可以从 DNS 查询 IPv6地址。 但是 、对于连接 到 IPv6地址、会出现错误`SLNETERR_BSD_ECONNREFUSED                                      (-111L) /**<连接被拒绝`

"在此版本上、仅支持 AF_iNet 套接字地址" 是否正确?  谢谢。

```sh
~$ cat simplelink_sdk_wi_plugin_2_40_00_22/source/ti/drivers/net/wii/sl_socket.h
[...]
/*!
\brief 在套接字上启动连接

函数用于连接由套接字引用的套接字
描述符 sd、添加到 addr 指定的地址。 地址
参数指定 addr 的大小。 的格式
addr 中的地址由的地址空间决定
插座。 如果是 SOCK_DGRAM 类型、则此调用指定
要与套接字关联的对等器件;此地址
数据报要发送到哪个数据报、以及唯一的数据报
要接收数据报的地址。 如果
套接字的类型为 SOCK_STREAM、此调用尝试执行
连接到另一个套接字。 指定了另一个套接字
即通信空间中的地址
插座的位置。


\param[in] SD 套接字描述符(句柄)
\param[in] addr 指定目标地址\n
sockaddr:\n -的代码
地址格式。 版本中
仅支持 AF_iNet。\n -
套接字地址、长度
具体取决于代码格式

param[in] addrlen 包含指向的结构的大小
由 addr 发送

成功返回,套接字句柄。\n
在一个非阻塞连接上、一个可能的负值为 SL_EALREADY。
失败时,为负值。\n
如果系统中没有资源、则可以返回 SL_POOL_IS 空
在这种情况下、请稍后重试、或增加 MAX_ANOND_ACactions

sa sl_Socket
\note 属于\ref client_side
警告
*
#if _sl_include_FUNC (sl_Connect)
_i16 sl_Connect (_i16 SD、
const SlSockAddr_t *地址、
_i16 addrlen);
#endif
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chunyang、

    CC3120通常支持 IPv6协议和 IPv6寻址。 但是、如您所述、主机驱动程序套接字模块的 sl_Bind 函数仅支持 IPv4地址。  

    通常、 SL_ERROR_BSD_ECONNREFUSED 表示远程服务器未侦听该套接字、或主动拒绝 CC3120的连接尝试。 在这两种情况下、应检查服务器配置以确保没有任何设置阻止 CC3120连接。 并仔细检查您的 CC3120代码、以确保您连接到正确的地址和端口。

    此致、

    Paul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿 Paul  

    谢谢您的回复。 在服务器端、我确定它正在侦听、并允许从客户端进行连接。 我很困惑,正如我们在上面的 SDK 源代码行( sl_Connect )中看到的,它写了“sockaddr:\n -地址格式的代码。 此版本仅支持 AF_iNet。" 这 意味着"sl_Connect" API 函数仅支持 AF_iNet 进行连接?

    此致、

    春阳

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chunyang、

    我仔细查看了您提到的主机驱动程序套接字 API 文档以及一些源代码。 我可以确认这是文档中的错误、并已报告、以便修复。 我之前的评论不正确。 此 API 的所有函数都支持 sl_AF_inet6 (IPv6)进行客户端/服务器套接字通信。

    如果您看一下 我们的《编程人员指南》中的第6.5章"插槽工作流程"、本文档将准确地表示支持的功能。

    很抱歉我感到困惑。

    至于您看到的连接被拒绝错误、您能否提供服务器上 TCP 握手的网络捕获/日志?  

    此致、

    Paul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嘿 Paul、

    您说得对、我解决了这个问题、 它是由防火墙引起的。 谢谢。

    春阳