我们有一些旧的串行代码,只需打开然后关闭它即可检查串行端口是否可用。现在我们正在向应用程序添加网络支持,我想通过提供 ip 地址作为字符串来重用该功能。
/**
* So far I have tried:
* A passed in portPath normally looks like:
\\?\acpi#pnp0501#1#1#{GUID}
10.2.0.155:2001
//10.2.0.155:2001/
\\.\10.2.0.155:2001\
\\?\10.2.0.155:2001\
* all without success.
*/
bool PortIsAvailable( const CString& portPath )
{
HANDLE hCom = ::CreateFile( portPath,
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened with exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
FILE_FLAG_OVERLAPPED, // not overlapped I/O
NULL ); // hTemplate must be NULL for comm devices
if (INVALID_HANDLE_VALUE != hCom )
{
::CloseHandle( hCom );
return true;
}
return false;
}
我知道我可以先使用 connect 然后关闭,但我想以最少的更改重用该功能。如果我能重用这个功能就更好了。如果不是,那么我将不得不编写代码来确定它是否是套接字。
我想知道通过 CreateFile 打开套接字的正确方法是什么?