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.

[参考译文] RTOS/TM4C1294NCPDT:TM4C1294 -重复使用的 TCP 端口号-问题

Guru**** 2455360 points
Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/638057/rtos-tm4c1294ncpdt-tm4c1294---tcp-port-number-reused---problem

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:CC3200

工具/软件:TI-RTOS

您好!

我使用 TM4C1294 (TIRTOS)并且遇到以下问题。 每当我尝试连接到远程服务器时、我的设备(客户端)始终使用相同的端口:57346、如随附的屏幕截图所示。 我不使用 bind ()函数,也看不到在代码或配置文件中的任何位置使用的端口号。 我使用 TI 制作的 Get HTTPS 模板作为项目的基础。

(笑声)

sockkfd = socket (AF_iNet、SOCK_STREAM、0));

//创建和设置 socket *
sockkfd = socket (AF_iNet、SOCK_STREAM、0);
memset (&servAddr、0、sizeof (servAddr));
伺服地址.sin 系列= AF_iNet;
伺服地址.sin_addr.s_addr = SERV_ADDR;
servAddr.Sin_port = htons (ldestSslPort);



/*连接到套接字*/
lRetVal = connect (sockkfd、(struct sockaddr *)&servAddr、sizeof (servAddr));
如果(lRetVal < 0)
{
//错误
}

… 

如何解决此问题?

此致

Dariusz Adamczyk

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

    尊敬的 Dariusz:

    很清楚、哪个器件是 TM4C? 客户端还是服务器? 另一个器件是什么? 每个设备的 IP 地址是什么?

    Todd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Todd、
    我使用的是 TM4C1294XL Launchpad。 我的软件作为客户端工作、我尝试连接到本地网络中的服务器(在 PC 上工作的服务器)。 目前我使用阻塞 TCP 连接。 我的本地网络中的 LaunchPad IP 为192.168.0.101、PC 为192.168.0.250。 我在 CC3200上制作了类似的软件、一切都正常(CC3200始终使用不同的端口)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dariusz:

    您是否关闭了客户端套接字? 您是否每次都在同一套接字上调用 connect?

    Steve

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


    我的程序创建一个套接字、连接、发送测试数据、然后断开连接、最后 TM4C1294进行软复位。 在本例中、每次复位后、我创建一个新的套接字。 TM4C 应该为每个新插槽使用不同的端口(就像 CC3200那样)。 使用相同的端口会使服务器将其视为重新传输(拒绝连接- Wireshark 屏幕截图)。 这也可能导致某些路由器出现问题。 为什么 TM4C 始终使用相同的输出端口? 它是 NDK 的一项功能? 有什么建议吗?

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

    尊敬的 Dariusz:

    [引用 user="Dariusz Adamczyk"]我的程序创建一个套接字、连接、发送测试数据,然后断开连接

    断开连接是如何发生的?

    或者、这种断开是因为您正在执行软复位?

    [引用 user="Dariusz Adamczyk"]最后 TM4C1294进行软复位[/quot]

    您能就此澄清一下吗? 在您的情况下、什么是软复位? 是否正在重新引导 NDK 堆栈? 您是否正在重新启动整个应用程序(因此 TI-RTOS 也在重新启动?)

    [引用 user="Dariusz Adamczyk"]... sockkfd = socket (AF_iNet、SOCK_STREAM、0));//创建和设置套接字*/sockfd =套接字(AF_iNet、SOCK_STREAM、0);memset (&servAddr、0、 sizeof (servAddr));servAddr.Sin_Family = AF_iNet;servAddr.Sin_addr.s_addr = SERV_ADDR;servAddr.Sin_port = htons (ldestSslPort);//连接到 socket */ lRetVal = connect (socsized、(struct)、(struct sockAddr_port)= htons (lAddr)...(如果是)、则为//(sockAddr)...(如果是)))...(如果是)、则为//(如果是)

    是否可以共享“connect()”调用后的代码? (即、我想看看"..." 是)。

    具体而言、我想看看哪一方发起了连接(谁是更近的主动者、谁是更近的被动者)。

    Steve