社区
网络编程
帖子详情
怎样检测网线拔出?
feichester
2010-11-01 10:35:29
主机和客户机网口通信,已建立socket连接,当网线拔出的时候,如何检测到?
或者说当拔掉电脑上的网线时,如何编程检测到这个情况,高手帮忙,谢谢!
...全文
1217
20
打赏
收藏
怎样检测网线拔出?
主机和客户机网口通信,已建立socket连接,当网线拔出的时候,如何检测到? 或者说当拔掉电脑上的网线时,如何编程检测到这个情况,高手帮忙,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackson35296
2010-11-02
打赏
举报
回复
[Quote=引用 14 楼 wonsea 的回复:]
TCP
1.如果是本机拔掉网线,无论阻塞非阻塞socket,都会立即返回SOCKET_ERROR;
2.如果是对方拨网线,本地TCP层是不会收到FIN的,所以只能用超时检查或者心跳来确定是否连接断开;
[/Quote]
没用过WSAGetLastError()?
wonsea
2010-11-02
打赏
举报
回复
TCP
1.如果是本机拔掉网线,无论阻塞非阻塞socket,都会立即返回SOCKET_ERROR;
2.如果是对方拨网线,本地TCP层是不会收到FIN的,所以只能用超时检查或者心跳来确定是否连接断开;
xiayadong
2010-11-02
打赏
举报
回复
心跳包!
我记得拔出网线后,socket连接是没有任何反应的!
jackson35296
2010-11-02
打赏
举报
回复
TCP通信方式不建议用心跳包。
阻塞模式下
recv()函数返回-1,就表示连接断开,无论是拔出网线还是主机关闭套接字
非阻塞模式下,recv()或send函数返回-1,且WSAGetLastError()为
WSAENETRESET或WSAECONNRESET表示连接断开
select模型下第四个参数存放的套接字为错误的套接字,也能标示该套接字相关的连接已断开
IOCP模型下GetQueuedCompletionStatus()返回0,且GetLastError() != WAIT_TIMEOUT标示连接断开
TA_V_SFIQ_SFIQ
2010-11-02
打赏
举报
回复
http://topic.csdn.net/t/20030725/23/2073376.html
TA_V_SFIQ_SFIQ
2010-11-02
打赏
举报
回复
以前看过好像有一个回调函数的
Wang471981125
2010-11-02
打赏
举报
回复
[Quote=引用 3 楼 self001 的回复:]
#include "stdafx.h"
#include "test.h"
#include <Wininet.h>
#include <Sensapi.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//////////……
[/Quote]
帮顶
lijianli9
2010-11-02
打赏
举报
回复
如果是SOCKET通讯的话,建议使用心跳包。
weblai
2010-11-02
打赏
举报
回复
3楼的很全面。
翅膀又硬了
2010-11-02
打赏
举报
回复
+1[Quote=引用 14 楼 wonsea 的回复:]
TCP
1.如果是本机拔掉网线,无论阻塞非阻塞socket,都会立即返回SOCKET_ERROR;
2.如果是对方拨网线,本地TCP层是不会收到FIN的,所以只能用超时检查或者心跳来确定是否连接断开;
[/Quote]
这不是鸭头
2010-11-02
打赏
举报
回复
[Quote=引用 11 楼 jackson35296 的回复:]
TCP通信方式不建议用心跳包。
[/Quote]
很多情况TCP连接是不能给出提示的。
jhayumu
2010-11-02
打赏
举报
回复
3楼的代码很全面
sunshine716
2010-11-02
打赏
举报
回复
用InternetGetConnectedStateEx函数
self001
2010-11-01
打赏
举报
回复
#include "stdafx.h"
#include "test.h"
#include <Wininet.h>
#include <Sensapi.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
void Fun_InternetGetConnectedState()
{
//#define INTERNET_CONNECTION_MODEM 1
//#define INTERNET_CONNECTION_LAN 2
//#define INTERNET_CONNECTION_PROXY 4
//#define INTERNET_CONNECTION_MODEM_BUSY 8
DWORD flags;//上网方式
BOOL m_bOnline=TRUE;//是否在线
m_bOnline=InternetGetConnectedState(&flags,0);
if(m_bOnline)//在线
{
if ((flags & INTERNET_CONNECTION_MODEM) ==INTERNET_CONNECTION_MODEM)
{
cout<<"在线:拨号上网\n";
}
if ((flags & INTERNET_CONNECTION_LAN) ==INTERNET_CONNECTION_LAN)
{
cout<<"在线:通过局域网\n";
}
if ((flags & INTERNET_CONNECTION_PROXY) ==INTERNET_CONNECTION_PROXY)
{
cout<<"在线:代理\n";
}
if ((flags & INTERNET_CONNECTION_MODEM_BUSY) ==INTERNET_CONNECTION_MODEM_BUSY)
{
cout<<"MODEM被其他非INTERNET连接占用\n";
}
}
else
cout<<"不在线\n";
}
void Fun_IsNetworkAlive()
{
DWORD flags;//上网方式
BOOL m_bOnline=TRUE;//是否在线
m_bOnline=IsNetworkAlive(&flags);
if(m_bOnline)//在线
{
if ((flags & NETWORK_ALIVE_LAN) ==NETWORK_ALIVE_LAN)
{
cout<<"在线:NETWORK_ALIVE_LAN\n";
}
if ((flags & NETWORK_ALIVE_WAN) ==NETWORK_ALIVE_WAN)
{
cout<<"在线:NETWORK_ALIVE_WAN\n";
}
if ((flags & NETWORK_ALIVE_AOL) ==NETWORK_ALIVE_AOL)
{
cout<<"在线:NETWORK_ALIVE_AOL\n";
}
}
else
cout<<"不在线\n";
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
// CString strHello;
// strHello.LoadString(IDS_HELLO);
// cout << (LPCTSTR)strHello << endl;
int i=0;
while (TRUE)
{
cout << "请选择测试的方式:\n"
<< "1. InternetGetConnectedState\n"
<< "2. IsNetworkAlive"
<< endl;
cin >> i;
switch(i)
{
case 1:
Fun_InternetGetConnectedState();
break;
case 2:
Fun_IsNetworkAlive();
break;
default:
cout << "错误!\n";
}
cout << endl;
}
}
return nRetCode;
}
说明:
InternetGetConnectedState():对网络状况不能及时反应
IsNetworkAlive():可以及时反应网络连通情况,但是需要服务System Event Notification支持(系统默认自动启动该服务)。使用该函数,需要安装最新的SDK(如.net的)
Eleven
2010-11-01
打赏
举报
回复
InternetGetConnectedState函数可以得到当前网络的连接状态
向立天
2010-11-01
打赏
举报
回复
可以通过心跳检测机制
vs2017环境,windows系统,
检测
网线
插入
拔出
状态。
vs2017环境,windows系统,
检测
网线
插入
拔出
状态。核心代码短短30行。亲测可用,我实际用到了工程中,报告
网线
是否插入。
Android 操作以太网,监听
网线
插拔和以太网开关,设置以太网静态IP等
这个项目已经很老了,其实是从 Android 4.4.4 的系统 Settings 中 copy 出来的。 其实原理都是编译运行系统 App,然后弄出来自己想要的功能。如果有需要编译系统 App 的,可以看下我的专栏:https://xiaozhuanlan.com/system-app 付费产品,不喜勿购。 Android 操作以太网的项目,提供了监听
网线
插拔和以太网开关,设置以太网静态IP、网关、子网掩码、dns等。
Windows Server 2019 高可用性管理
通过这一个课程的介绍,我们将为大家去说明,企业的生产环境当中,应用程序的高可用性和高可靠性的应用场景和特点,以及在 Windows Server 2019 的系统当中,为了保障应用程序提供的网络、存储和主机层面不同的高可用性解决方案,学员能够理解网络层面网络负载平衡,网络组合技术的应用场景,并且能够完成这两项技术的配置,保障应用程序不会因为一根
网线
,一块网卡掉线,损坏而导致业务中断,学员能够理解存储池的相关组件和原理,并且能够完成存储池的创建和存储空间的划分,理解存储不同布局实现的性能和可靠性保证,并且能够利用 iSCSI 协议以及网络多路径技术,向网络服务器发布存储资源,保障应用程序不会因为一块硬盘损坏,而导致业务中断或是数据丢失,学员能够理解故障转移群集的组件和工作原理,能够完成群集先决条件的准备,创建和配 Hyper-V 的故障转移群集,能够对于群集的计算,存储和网络资源进行管理和配置,并且对于群集环境进行调优,实现应用程序不会因为一台主机损坏,而导致业务中断
现场拔
网线
!第四范式版GPT能力首秀,有点不一样
国产大模型能大战,又有一员猛将入局。 就在刚刚,第四范式自研大模型“式说”(4Paradigm SageGPT)在上线2个月后,终于来了一波能力首秀。 而且纵观整场活动的发布,最直观的感受就是:不一样,着实不一样。 怎么说? 首先,他敢在现场演示的时候,拔!网!线! 效果是这样的,例如上传一张《狂飙》剧照之后,让“式说”描述一下照片,它的回答是: 这张照片中有一组穿着制服的男子站在一张桌子前。 而后追问剧照中有几个人,“式说”也立即给出了答案:9个。 再来看下以文生图的能力,先让它画一下“狮子头”: 不难看出,生成图片的效果是过关的;此时现场很多人立即开口说到:“红烧狮子头”呢? 第四范式不在怕的,马上在现场演示了起来: 接下来,是代码生成方面,第四范式在现场直接让“式说”秀了一下“Python猜随机数”: 面对敢于拔
网线
的live演示,现场观众也是惊叹与掌声不断。 但“不一样”的点还不只于此,而且上面展示的这些能力,也仅仅是“开胃菜”。 因为第四范式的GPT,并不是“你以为的你以为”,而是不同于其它厂商的一套玩法—— 用AIGC的能力重构软件(AIGS),目的就是以此来提高
屏幕监控程序,可以设置时间监控频率
屏幕监控程序,在
网线
拔出
的情况下也可以监控,一旦联网将自动上传数据
网络编程
18,357
社区成员
64,211
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章