CreateProcess在退出后占用套接字端口(每个套接字地址只允许使用一次)
CreateProcess occupies socket port (Only one usage of each socket address permitted) after exit
我在进程中侦听套接字端口4000。我使用CreateProcess
交换机使用另一个端口号启动另一个进程。在退出我的进程后,当我试图再次启动它时,即使子进程被终止,我也收到了这个错误:
Only one usage of each socket address (protocol/network address/port) is normally permitted.
但当我从explorer正常启动这个过程时,就不会发生冲突。我应该如何释放端口以供使用?
编辑:我使用此代码来创建新流程。
CreateProcessW(NULL, pwszCommandLine, NULL, NULL, TRUE,
NORMAL_PRIORITY_CLASS | CREATE_DEFAULT_ERROR_MODE | CREATE_NEW_CONSOLE,
NULL, NULL, &si, &pi)
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
我不等待进程结束,因为这个进程不应该退出。
关闭调用只标记TCP套接字关闭。它不再可用于进程。但内核可能在一段时间内仍保留一些资源(TIME_WAIT、2MLS等(。
设置SO_REUSEADDR应该可以消除绑定问题。
因此,在调用setsockopt时,请确保true的值真的不是零(溢出错误可能会覆盖它(:
true = 1;
setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int))
以上都是从这里开始的。这有帮助吗?
相关文章:
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- 具有使用 UDP 套接字字节的限制的标头
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- 尝试将数据从C++发送到 Python 并使用套接字C++反转,C++ sendto() 和 python recvfr
- 使用单个套接字处理多个传入的 UDP 连接
- 使用 Broadcast 发出的从节点服务器发送的数据不能被 C++ 套接字 IO 客户端读取
- Visual Studio(C++):如何使用TCP套接字发送多个值
- CreateProcess在退出后占用套接字端口(每个套接字地址只允许使用一次)
- 尝试关闭 SSL 套接字时使用升压 asio 1.64 的分段错误 (SIGSEGV)
- 为什么我应该在关闭套接字之前使用shutdown()
- 仅在收听套接字上使用选择
- 如何将重叠I/O与套接字一起使用
- 谈到套接字时使用的同步和异步术语
- 有没有办法将QTcpSocket与现有套接字一起使用
- 在套接字中使用 send() 方法发送 "string" 和"int" var
- 如何在Unix上的c++套接字上使用带有read()的超时
- 我可以在 boost::asio 异步模式下创建和接受套接字时使用 boost::shared_ptr 吗?
- BSD套接字-如何使用非阻塞套接字
- ZeroMQ:重新绑定套接字时使用地址错误