windows2008文件服务器端口,windows server 2008 文件服务器不定期出现大量CLOSE_WAIT状态的连接,必须重启服务器,客户端才能访问共享。...

故障现象如题,用netstat -ano -p tcp 可以看到大量的连接。都处于close_wait状态。。然后客户端访问共享就很卡,EXCEL也卡死。服务器重启恢复正常,但是过一段时间又出现这个问题。不知道有谁知道这个问题可能出在哪里,服务器是2008 ent sp2,客户端是XP SP3,excel 为2007版。

TCP 172.16.5.20:445 10.188.82.17:1929 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2400 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2423 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2436 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2438 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2443 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2502 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2508 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2515 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.18:2539 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:1835 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:1851 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:1859 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:1873 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:2005 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.24:2010 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.37:2103 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.82.37:2112 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.20:3424 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.20:3434 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.20:3447 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.20:3467 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.22:1031 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.22:1056 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.22:1079 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.84.22:4977 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.44:3610 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.44:3618 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.64:4293 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.69:4203 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.69:4245 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.69:4266 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.83:1065 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.101:2771 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.101:2777 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.101:2782 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.135:1590 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.135:1598 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.85.247:2785 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.15:3120 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1129 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1165 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1181 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1183 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1189 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1192 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1194 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1200 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1202 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1208 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1216 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1224 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1226 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1232 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1234 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.21:1240 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.91:1775 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.113:1692 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.86.113:1694 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.55:1615 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4175 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4178 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4184 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4189 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4192 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4194 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4200 CLOSE_WAIT 4

TCP 172.16.5.20:445 10.188.87.73:4202 CLOSE_WAIT 4



在C++中,TCP客户端通常通过设置一个超时机制来检测连接是否建立成功。可以使用`boost::asio`库或者标准库中的`std::chrono`和`connect()`函数配合来实现这个功能。以下是基本步骤: 1. 创建一个异步连接操作(例如,使用`boost::asio::ip::tcp::async_connect()`)并传递套接字、服务器地址和端口。 ```cpp auto socket = boost::asio::make_socket(io_service, tcp::socket::protocol()); const auto endpoint = boost::asio::ip::tcp::endpoint(ipv4::address::from_string("your_server_ip"), server_port); boost::asio::async_connect(socket, endpoint, handle_connect); ``` 2. 定义一个回调函数`handle_connect`来处理连接完成事件。在这个函数里,检查`error`变量,如果它不是`boost::asio::error::operation_aborted`或`boost::asio::error::connection_refused`等表示失败的状态,则连接成功。 ```cpp void handle_connect(const boost::system::error_code& error) { if (error == boost::asio::error::operation_aborted || error == boost::asio::error::connection_refused) { // 连接失败,处理错误 std::cout << "Connection failed: " << error.message() << std::endl; } else { // 连接成功 std::cout << "Connected to the server" << std::endl; // 设置超时检测 set_timeout_for_data_transfer(); } } ``` 3. 如果需要定期检测数据传输,可以在连接成功后设置一个定时器(`std::this_thread::sleep_for()`或`boost::asio::deadline_timer`)。当超过预定时间还未收到响应,可以认为连接有问题,并尝试断开重新连接或报告异常。 ```cpp void set_timeout_for_data_transfer() { // 设置一个合理的超时时间,比如5秒 auto timeout_duration = std::chrono::seconds(5); deadline_timer t(io_service); t.expires_from_now(timeout_duration); t.async_wait([this](const boost::system::error_code& ec) { if (!ec && t.expires_at().count() <= 0) { // 数据传输超时,这里你可以选择重试、关闭连接或其他处理方式 std::cout << "Data transfer timeout, assuming connection lost" << std::endl; close_connection(); } }); } ``` 记住,在实际应用中,你还需要清理资源并在适当的时候取消异步操作,如`io_service.stop()`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值