源代码:
bool Helper::connectToAComputer(char* destIpString, char* srcIpString)
{
int iResult = 0;
u_long iMode = 1;
SOCKET ConnectSocket = INVALID_SOCKET;
ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ConnectSocket == INVALID_SOCKET)
{
wprintf(L"socket function failed with error: %ld\n", WSAGetLastError());
//return NULL;
}
sockaddr_in clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr(destIpString);
clientService.sin_port = htons(22223);
iResult = connect(ConnectSocket, (SOCKADDR *)& clientService, sizeof(clientService));
if (iResult == SOCKET_ERROR)
{
wprintf(L"connect function failed with error: %ld\n", WSAGetLastError());
}
closesocket(ConnectSocket);
return false;
}
我正在编写一个程序,它将检查所有本地IP地址,以查看本地网络上的计算机或设备。我写了这个连接到套接字的函数。
问题是当套接字尝试连接到不属于任何设备的IP时,程序就会停止并等待连接线。它可以连接到计算机拥有的IP。我希望函数告诉我连接是否成功而不是挂起和等待。
答案 0 :(得分:0)
大约一分钟后它会超时。在进行连接后,您可以通过使用非阻塞模式和select()
来实现可写性,以及超时。