我正在开发我的第一个C/C++应用程序,并使用套接字。该应用程序连接到服务器并读取从服务器发送的图像数据,图像数据之前有一些感兴趣的整数,如要读取多少数据。
该应用程序使用阻塞套接字,因为我认为当有阻塞直到数据可用的选项时,让我的线程不断循环并不是更好的选择。
现在我的问题是,如果服务器失去与网络的连接,我的应用程序就会停在那里,我无法触发通知给用户或尝试重新连接。我不知道如何检查连接状态。
请问是否有人能够给我提供一些解决问题的建议?
谢谢。我已经贴出了我的readImageInt()函数,显示了我如何从套接字中读取。我使用Linux设备进行开发。
该应用程序使用阻塞套接字,因为我认为当有阻塞直到数据可用的选项时,让我的线程不断循环并不是更好的选择。
现在我的问题是,如果服务器失去与网络的连接,我的应用程序就会停在那里,我无法触发通知给用户或尝试重新连接。我不知道如何检查连接状态。
请问是否有人能够给我提供一些解决问题的建议?
谢谢。我已经贴出了我的readImageInt()函数,显示了我如何从套接字中读取。我使用Linux设备进行开发。
int readImageInt()
{
int nb, i;
union {
long int whole;
char bytes[4];
} v;
memset(v.bytes, 0x00, 4);
nb = recv(imagesock, v.bytes, 4, MSG_WAITALL);
if (nb == 0||nb == -1)
{
return -1;
}
else
{
v.whole = ntohl(v.whole);
return v.whole;
}
}
SOCK_STREAM
? - imrealIPPROTO_TCP
?我猜它是TCP。 - imrealsocket(PF_INET, SOCK_STREAM, IPPROTO_TCP)
。 - imreal