初めての c/c++ アプリケーションを開発し、ソケットを使用しています。このアプリケーションはサーバーに接続し、サーバーから送信された画像データを読み取ります。画像データの前には、読み取るデータ量などの重要な int がいくつかあります。
データが利用可能になるまでブロックするオプションがあった場合、スレッドを継続的にループさせる方が良いとは思わなかったため、アプリケーションはブロックソケットを使用しています。
私の問題は、サーバーがネットワークへの接続を失っただけで、アプリケーションがそこに座っているだけで、ユーザーへの通知をトリガーしたり、再接続を試みたりする方法がないことです。接続状態の確認方法がわかりません。
誰かが私の問題を解決する方法について少しアドバイスをくれませんか?
ありがとうございました。ソケットからの読み取り方法を示す 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;
}
}