gpt4 book ai didi

c++ - 无法断开和重新连接套接字(C++,winsock2)

转载 作者:行者123 更新时间:2023-11-28 06:40:15 25 4
gpt4 key购买 nike

我希望客户端程序 (TCP) 准备好在服务器开始接受()传入连接时连接到服务器程序(客户端程序应始终保持运行状态,并且服务器程序可以随时开始或结束).客户端代码如下所示:

while (1) {

//Wait for the server to accept the connection:
while (connect(socket,(sockaddr*)&addr,sizeof(addr))!=0) {cout<<WSAGetLastError()<<endl;}

//Send whatever data...

}

在第一次执行 while (1) 循环时,一切都按预期运行;当客户端连接到服务器时,它发送所有数据,服务器程序结束。然后我希望客户端在 while (connect(...,...,...)!=0) 循环中再次等待,直到服务器再次启动并接受()一个连接,但它没有连接到服务器和 WSAGetLastError() 返回 10056,表明套接字已经连接(为什么?)。我听说在套接字上调用 closesocket() 后无法重新连接客户端,因此我尝试通过将 shutdown(socket,SD_SEND) 添加到 while (1) 循环来重新连接之前断开客户端,但这也不起作用。

除了反复等待客户端程序结束再启动,还有什么办法吗?有没有办法断开客户端与服务器程序的连接,以便客户端稍后可以重新连接?

最佳答案

您的应用程序逻辑存在严重错误。您不需要重新连接已连接的套接字;您不能重新连接已连接的套接字;并且您无法重新连接已关闭的套接字,除非您正在探索 Windows API 的远程角落之一。

关于c++ - 无法断开和重新连接套接字(C++,winsock2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097482/

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