我正在开发我的第一个 c/c++ 应用程序并使用套接字。此应用程序连接到服务器并读取从服务器发送的图像数据,图像数据前面有一些感兴趣的整数,例如要读取多少数据。
该应用程序正在使用阻塞套接字,因为当可以选择阻塞直到数据可用时,我认为让我的线程连续循环不会更好。
我现在的问题是,如果服务器只是失去与网络的连接,我的应用程序就坐在那里,我无法触发给用户的通知或尝试重新连接。我不知道如何检查连接状态。
有人可以就如何解决我的问题给我一些建议吗?
谢谢你。我已经粘贴了我的 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;
}
}