gpt4 book ai didi

sockets - 调用accept()后如何更改套接字的监听端口?

转载 作者:行者123 更新时间:2023-12-03 11:52:04 27 4
gpt4 key购买 nike

我想更改套接字正在监听的端口。问题是,只要对accept()的调用仍在进行中,我就无法执行此操作。我试图关闭套接字,期望accept()退出并返回负值。但是在FreeRTOS上却不会发生。当我从其他线程关闭套接字时,accept()仍然执行。我想出的唯一解决方法是在变量中设置一个标志,建立一个TCP连接,然后在accept()完成时,使用新的端口nad调用listen()检查该标志bind()。但是,也许有一种更优雅的方法?

最佳答案

I'd like to change the port a socket is listening on.



你不能您必须关闭当前的监听套接字,然后再打开一个新的监听套接字。

The problem is that I can't do it as long as a call to accept() is still in progress.



您必须先取消阻止 accept(),然后才能关闭监听套接字。

I tried closing the socket



这是实现需求的正确方法,但这并不意味着更改套接字正在监听的端口。您必须创建一个监听新端口的新套接字。

我将创建一个新套接字并使其运行,并设置一个标志,使之不接受旧套接字上的任何进一步的连接:当旧套接字上的 accept()最终解除阻塞时,检查该标志,如果已设置,则关闭接受的连接,并旧的监听套接字并退出接受循环和线程的线程。

这是一个奇怪的要求。目的是什么?

关于sockets - 调用accept()后如何更改套接字的监听端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com