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.

[参考译文] LAUNCHXL-CC3235S:连接请求主要被拒绝

Guru**** 2391415 points
Other Parts Discussed in Thread: SYSCONFIG, CC3235S, UNIFLASH, CC3235SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1197921/launchxl-cc3235s-connection-request-mainly-gets-rejected

器件型号:LAUNCHXL-CC3235S
Thread 中讨论的其他器件:UNIFLASHCC3235SF、SysConfig、CC3235S

大家好

我正在使用 launchxL-cc3235将 TI 集中器程序的修改版本连接到我在 win10 PC 上的应用。

我正在使用的 CCS 是 CCS10.4.& WIN 应用 是使用 MS Visual Studio2019用 C#编写的。 win10 PC 通过 以太网电缆连接到网络。

我发现我可以从 cc3235连接到我的 WIN 应用,但我通常似乎从 sl_Connect()得到错误-111 .. 它不会使用分块方法。

当我被拒绝时,我发现我可以通过同一个 WiFi 网络使用另一台 PC 上的程序连接到我的 WIN 应用。

我应该从哪里开始寻找原因??? cc3235有问题吗? win10网络子系统? 我的 WIN 应用? 路由器/交换机?

需要更多信息吗?

谢谢期待

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

    您好!

    应在 AP 处使用网络监听器(Wireshark、tcpdump)来确定遇到的情况。 如果不知道网络上发生了什么、就很难说。

    1月

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

    是...在我的帖子后、我下载了 Wireshark。

    有趣的是、我注意到该 Launchpad 向224.0.0.251发送了几个数据包-谁知道吗?

    但是、似乎没有向我侦听的 program...it发送任何 TCP 数据包、因为我对 Wireshark 的了解非常有限、可能是设置了错误的捕获参数...

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

    您好!

    很难说您在 Wireshark 日志(数据包224.0.0.251)中看到了什么。 可能是多播 mDNS 数据包。

    不知道你捕获了什么,我不能回答你的问题。 Wireshark 到底在什么地方运行? 是您的计算机在运行 TCP 服务器(您在 C#中编写的服务器应用程序)、还是直接从 AP 或网关捕获?

    1月

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

    你好、Jan

    感谢留在我的这件事....后来我的最后一篇文章,我读了有关捕获的相关部分。
    我现在能够捕获服务器端的流量(现在我在该计算机上安装了 Wireshark!!)。
    一旦服务器从 CC3235获得 TCP 数据包、一切都很顺利。
    问题似乎是 sl_Connect () 没有发送 TCP 连接请求包-但它在一段时间后返回错误-111 (SL_ERROR_BSD_ECONNREFUSED)(我提到'a while ',因为我调用 sl_connect ()每10ms 一次,看看它是否连接)。  

    在做了一些实验之后、我注意到:
    如果我调用 sl_WlanConnect (),然后调用 sl_Connect (),我发现在第二个 sl_Connect (),我突然看到 TCP 数据包到达服务器!!

    为什么只能在第二个电话上??? 为什么不首先呢?

    我想尝试捕获 WiFi 数据包(以检查我的网络是否混乱)、但不知道如何在这个阶段执行此操作...
    我的设置是:
    CC3235将数据包传输至本地集线器、然后由集线器将数据包转发(我假设)到路由器、再由路由器将这些数据包转发回集线器、再由集线器通过电缆将它们转发到服务器 PC (反之亦然)。 路由器是 DHCP 服务器。

    Moshe

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

    大家好、Moshe、

    成功地进行 TCP 连接,必须调用 sl_Connect()两次,这是没有技术原因的。  您的代码中似乎存在一些实现问题。 您是否正确实施了 WLAN 连接的状态机? 这意味着在调用 sl_WlanConnect ()之后,您需要等待连接事件 SimpleLinkWlanEventHandler -> sl_WLAN_EVENT_CONNECT,之后需要等待通过异步事件 SimpleLinkNetAppEventHandler -> SL_NETAPP_EVENT_IPV4_ACQUIRED 获取 IP 地址。 当 sl_WlanConnect () API 返回成功时,这并不意味着您已连接到 WLAN ,这意味着连接过程已开始。

    • 要捕捉无线 WiFi 数据包、您需要具有兼容的 WiFi 卡(WiFi 加密狗)。 很好的列表,你会发现在这里
    • 很抱歉、我不了解您的网络设置。 我不知道你所说的"本地枢纽"是什么意思。  网络术语中的术语集线器意味着不同的东西(类似于网络交换机的设备,但它仅在第1层工作)。 除非使用不同的 VLAN,否则没有理由通过路由器传输数据包

    1月

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

    你好、Jan

    是...根据您所写的内容、我认为我没有等待足够长的时间(当前为10秒)才能使 IPv4获取事件发生(我确实为这些回叫事件运行了一个单独的任务)) 并且相信已经发生了一个错误...我在任务之间使用一个信标、所以我不知道为什么信标应该失败...但是无论如何、我现在将使用信标()&一个基于事件的循环(带有超时检查)。

    我下载亚克力 wifi 嗅探器,告诉我的笔记本电脑没有兼容的 wifi 模块-所以谢谢你的列表( USB wifi 模块订购!).

    我的网络包含一个连接到传入光纤的 WAN 路由器。 然后、我通过线缆将几个较旧的路由器连接到主路由器。 它们充当有线(它们都有4个10baseT 端口)和无线连接的本地接入点...这是否让它变得更加清晰?

    一旦我返工 WL_CONNECT 代码、我将向您提供最新信息。

    Moshe

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

    您好!

    好的、只需确保旧 AP 没有启用 DHCP 服务器。

    我个人使用 WiFi 调试从"垃圾箱"上载的OpenWRT 旧 TP-Link 路由器/AP

    1月

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

    你好。。。持续的故事。。

    USB WiFi 适配器终于到达了在 Aramex 仓库周围花了许多天的时间,原因不明。
    其 TP-Link Archer T9UH 采用 RTL8814AU 芯片组。
    该适配器应该 有网络监控功能,但它只出现在 Mac 下,而不是窗口,甚至在 Mac 下,它不捕获 IP 数据包只有网络管理的。
    通过压克力监听器(和 npcap 替代 pwincap),我成功地监控了网络数据包,但又不是 IP 数据包,而是管理数据包。
    这是相当恼人的&我不确定是否需要执行其他任务以使其监控数据包。

    尽管如此、我还是决定监听通过以太网连接到达 PC 服务器的数据包。 现在执行该操作、我可以看到第1个 TCP 连接请求根本没有收到、但第2个请求收到了。  
    但是、如果我首先断开 Launchpad 上的 TCP 连接、我看到了 FIN 数据包、但当我重新连接(SYN)数据包时、始终没有到达。 但在第二次尝试我得到 SYN, ACK, RST 所有从 launchpad 和在 PC 程序上,我看到了2连接请求..

    那么、问题是在网络中的某个位置还是在 Launchpad 中的某个位置?

    Moshe

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

    大家好、Moshe、

    如果不对基础架构和代码进行更深入的调试、这很难说。 这是你无法解决的问题。

    FIN ACK 数据包可能会因基础设施内部的某些原因而丢失、他们知道... 也许您可以在关闭套接字之前尝试使用 LINGER 套接字选项、如下所示:

    SlSocklinger_t linger;
    linger.l_onoff = 1;
    linger.l_linger = 5;
    
    status = sl_SetSockOpt(sid, SL_SOL_SOCKET, SL_SO_LINGER, &linger, sizeof(linger));

    1月

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

    你好、Jan

    自从我之前发表过文章以来、我已经解决了与在本地无线 AP 之间嗅探无线数据包相关的问题、现在可以查看 CC3235发送和接收的数据。

    使用 Wireshark 和调试器进行更深入的开发、发现了以下内容...如果我只需关闭与服务器的 TCP 连接、然后重新打开它、我就会每次都进行连接。 因此这方面不是问题。

    但是...如果我关闭到服务器的 TCP 连接、然后我关闭到 AP 的 WIFI 连接、接着我请求连接到 AP、然后我尝试启动到 服务器的 TCP 连接。 然后、我注意到 CC3235没有发送 TCP 重新连接的第1个请求、而是在我第二次尝试时发送这两个请求。

    作为一个单独的问题(或者可能与之相关的问题)、我还在调试器中注意到、从 AP 断开的事件(当我的代码引发断开连接时)不会在 SimpleLinkWlanEventHandler 中返回...这是意料之中的吗?

    我将尝试 linger 选项、看看是否有任何效果。

    Moshe

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

    大家好、Moshe、

    我认为您在断开 WLAN 连接时看不到 SimpleLinkWlanEventHandler (SL_WLAN_EVENT_DISCONNECT)事件的行为没有任何原因。 您使用哪种连接策略? 您是使用连接配置文件还是通过 sl_WlanConnect () API 使用手动连接? 您使用的是哪个 SDK 版本? 您在器件中上传了什么 ServicePack (您应该具有特定 SDK 中的版本)?

    我想现在应该从设备捕获 NWP 日志了(请参阅SWRU455第20章)。 由于我没有用于分析 NWP 日志的工具、因此您需要等待 TI 回答。

    1月

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

    你好、Jan

    我使用 sl_WlanConnect ().and SDK 5.30
    我将把相关信息采集到日志中、并让 TI 处理在特定条件下需要2个调用来建立 TCP 连接的问题。

    一个附带问题:
    当远程端关闭 TCP 套接字时,我在 SimpleLinkSockEventHandler ()...in 中没有收到通知。事实上,我在 errors.h 中没有看到#define,例如"SOCKET_DISCONNECTED"。
    是否应该通过向远程连接发出 ping 来检查套接字(在两次传输之间)?

    Moshe

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

    大家好、Moshe、

    处理程序 SimpleLinkSockEventHandler ()在关闭正常 TCP 套接字时不被调用。 如果 sokcet 无法发送数据(SL_SOCKET_TX_FAILED_EVENT)或 SSL 套接字问题(SL_SOCKET_ASYNC_EVENT -> SL_SSL_NOTIFICATION_CONNECTED_SECURED)、则会调用该函数。

    抱歉、我不明白您对通过 ping 检查 TCP 套接字的评论(ICMP 和 TCP 是两种不同的协议)。

    BTW…… 是否使用 SDK 5.30中的服务包?

    1月

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

    你好、Jan

    我还没有加载服务包。
    我 现在尝试按照 服务包的自述文件中的说明进行操作、但 uniflash 在尝试加载任一 bin 文件时返回了数据验证错误、因此我显然会犯一些错误。 您能否给我指出一个文档、该文档提供了有关加载内容、使用顺序和程序的分步说明?

    错误为 Cortex_M4_0:FileLoader:验证失败:地址0x00000000处的值不匹配。 请验证目标内存和内存映射...所以(对我来说)这意味着、5.30版本的 servicepack 不是我的 Launchpad 的正确版本...那么、我该如何检查我需要安装哪个版本的 servicepack?

    关于 Ping ...当远程服务器终止其 TCP 连接时、CC3235确实会向远程主机发送 ACK 以向远程 FIN 发送应答、但我的程序不会获取任何有关这方面的反馈。 因此、我知道连接不再打开的唯一方法是尝试和 Tx 并得到失败事件进行响应。 因此、为了避免响应失败、我可以定期 发送 ping、该 ping 会告诉我该服务器是否仍然存在 (如果服务器一定仍然在侦听一个端口,或者如果我的 TCP 连接是打开的,或者不是,我认为这是一个相当愚蠢的练习事后!)。
    那么我的问题真的是"如何知道远程 TCP 服务器何时关闭了 TCP 连接"?

    Moshe

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

    大家好、 Moshe、

    使用未加载 Service Pack 的 CC32xx 器件不是最佳选择、因为您的器件可能会受到影响、出现错误和进行安全处理。 说明如何使用 Uniflash、您可以在此处或此处找到。 错误消息意味着您使用 Uniflash 的方式有误(您需要使用串行接口、而不是 JTAG)。

    用于确定 TCP 套接字是否已关闭的 TX 用法不是最佳方法。 常用的方法是使用  sl_Recv ()和检查返回代码(取决于类型套接字-阻塞或非阻塞)。

    1月

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

    你好、Jan

    我真的很感谢您在我的问题上与我在一起。

    实际上、我是根据 ServicePAK 文件夹中的自述文件尝试执行此操作的。 因此、显然没有很好地解释它。
    并且、我一直使用 Launchpad 的串行/USB 接口。  
    我跟随你的链接并阅读了一些关于 使用 uniflash 的信息...我确实成功地将我的程序映像与服务包一起加载...非常感谢。
    我没有注意到关闭和重新打开套接字有任何问题,所以 servicepack 解决了这个问题...但我现在注意到,在我使用 sl_Close ()关闭套接字后17秒,我会通过 Event SL_SOCKET_TRIGGER_EVENT_SELECT 获得 SimpleLinkSockEventHandler ()回调,这是正常的吗?  

    我假设服务 包将保持板载状态(在多个 CCS 下载和调试会话期间)、直到我执行另一个 uniflash 下载?

    我将使用您的建议来确定未来的套接字状态。  

    至于在我发出 sl_WlanDisconnect ()时没有收到通知的问题-我在 Wireshark 中注意到,没有来自 AP 的响应来确认'byebye',所以大概可以假定一旦有人调用函数来断开连接,无线电就会断开!

    Moshe

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

    您好!

    我不知道为什么在您的案例中会看到事件 SL_SOCKET_TRIGGER_EVENT_SELECT。 我从来没有见过这件事。

    服务包保存在 SPI 闪存(sFlash)内。 除非您(通过 Uniflash 软件或 SysConfig 映像创建者)重新编程 sFlash、否则会一直保留。 当您使用 JTAG 上传 RAM (CC3235S)或 XIP 闪存(CC3235SF)的内容时、它会影响 sFlash 的内容。 这意味着从 CCS 进行调试不会影响此服务包。

    您使用哪种安全类型(开放、WPA2、WPA3、WEP)? 我记得过去、WEP 的工作方式与其他加密类型略有不同。

    1月

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

    你好、Jan

    我通常使用 WPA2-PSK 以确保安全性、但我将此本地 AP 打开、这样我就可以看到802.11数据包中的数据。  
    (我在 AP 中使用白名单以确保没有人可以窃听网络)。
    但 我很快就会回到正常的安全状态。

    Moshe

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

    你好、Jan

    我想我会和你分享我的发现。

    我找到了未收到第一个套接字连接请求的问题。。
    这种情况只发生在具有安全性(我使用 WPA2-PSK)的网络上、而不是开放的网络上、这会使整个问题更加棘手。

    我有一个 MSP430、它连接到 CC1352 (通过其 UART2)、然后连接到 CC3235 (也通过 UART2)、CC3235随后与 WiFi 网络通信。

    So..i 从 MSP...发出"Connect to WiFi"命令、 然后通过 CC1352并转到 CC3235、后者会接收数据和程序中的一个函数调用 WLanConnect ()、并且 CC3235会连接到 WiFi...no 问题(安全/打开无关紧要)。
    几秒钟后、我发出一条"Connect to IP addr"命令、该命令由 CC3235接收(检查范围)、但 TIRTOS 本身会将该命令/数据保留在某个位置(但仅当网络安全时)、并且不会调用我的 UART 回调函数。
    然后、我发出第二  条"Connect to IP addr"命令、 CC3235也接收到该命令、但现在、TIRTOS 使用这两组数据调用我的 UART 回调函数!

    我在连接到 WiFi 网络上的 CC3235后尝试调用虚拟 UART2_READ (),但没有帮助。

    我还必须提到,第二次通话连接到 WiFi 网络后,我没有更多的问题连接/断开连接到 IP 地址...然而,如果我断开然后再次连接到 WiFi ,问题重复本身。  

    现在我将与 TI 讨论这一问题。

    Moshe

     

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

    大家好、Moshe、

    这看起来像是在 CC3235内部进行 UART 处理时出现的某种实现问题。 我认为您的 UART"连接到 WiFi"命令具有与打开或使用 WPA2-PSK 不同的结构、对吗? 另外、您可能在处理 UART 的缓冲区时遇到了一些问题、线程同步、错误地使用 TI 驱动程序、或者这可能是 UART 驱动程序内部的一些奇怪错误。 谁知道...

    CC3235具有称为 NWP 的独立协处理器、用于处理 WiFi 连接和插座。 该协处理器与用于执行代码的处理器(Cortex-M4)分开。 这意味着该协处理器的 WiFi 安全类型不会影响您的 UART 的功能。 而是应用处理器层的某个对象导致了您的问题。

    BTW…… 我个人来说、我不会将 TI 驱动程序用于外设、因为这个包装器层的限制太大。 我将 driverlib 和外设寄存器用于一些用途。

    1月